Syntax error: Bad for loop variable

Ubuntu 下执行 shell 时出现下面的错误:

./iptables.sh: 14: Syntax error: Bad for loop variable

G 发现是解释器的原因,Ubuntu 默认将 sh 链接至 dash:

deploy@unode01:~$ ll /bin/sh
lrwxrwxrwx 1 root root 4 2011-08-25 19:49 /bin/sh -> dash*

将 sh 改为 bash 是一种方法,网上还有说像下面这样的,我没有验证:

$ sudo dpkg-reconfigure dash
选择 no

利用 sort 进行 md5 校验

在正式使用之前,先来温习下 sort 的相关知识。
假设需要操作的文件如下:

$ cat sort.txt
ea038dab392acba4e64dd6cc3512cb69  /bin/readlink
319ae7896edf8aeebcbc94976402595d  /bin/ypdomainname
041fb5eb02d09b2ce46c5170556b06d3  /bin/mknod
9a83449f2577f6a7c82f941168175a91  /bin/lesskey
9446e2582df35daddf333dc75a9ac7bf  /bin/plymouth
2b1c9d8fa907caa4c7bf3c6e16c6f88c  /bin/ping6
cb9cc755697f811ca67cdf83af014e5d  /bin/openvt
8b6a1ef15d769b638319fb06c39ff6a1  /bin/su
f4def71857b9c3792a8b140df20af57e  /bin/ps
848e9828b6fddc4d822b24ad7806e2fb  /bin/pwd
6e0dada83903335efb2104c56170eaf6  /bin/chmod
6a7e0fe4d9a801b78ca12385cf0345de  /bin/more
fee856172ec8c607058b76f5491d13a2  /bin/sed

下面是一些常见的手法,简单的说明一下。
Continue reading

非交互式使用 parted

parted 跟 fdiks 类似,默认都是交互式的来划分硬盘,现在需要非交互式的来自动划分硬盘。

最直接的方式是在使用 parted 时,加上一个 -s 参数,这样就可以避免手工干预了,下面这个是划分一个 3T 的硬盘,使用 gpt 方式的分区表,将整个硬盘分为一个区:

$ sudo parted -s /dev/sdb mklable gpt
$ sudo parted  -s /dev/sdb mkpart  data 0 2998961MB
$ sudo mkfs.ext4 /dev/sdb1
$ mkdir /data;mount /dev/sdb1 /data

注意:使用 gpt 的方式没有主分区,扩展(逻辑)分区的说法。
Continue reading

PowerEdge 网卡启动顺序

当网络安装时,机器默认会从第一块网卡启动,也就是 eth0(公网 ip)。但是我们想从第二块网卡也就是划分在私网中的接口启动。
最初是在机子启动的时候俺住 Ctrl+s 进入 Broadcom 的 Comprehensive Configuration Management,然后进入第二块网卡,选择使用 pxe 启动。这样选择时候依然是从第一块网卡启动。
后来摸索需要在系统启动时按住 <F2>,进入 dell 的 BIOS,选择 "Intergrated Devices",然后在"Embedded Gb NIC2" 中选择 "Enabled with PXE"。这才是正确的启动方式。
 

Xen DomU 的内存

xen 配置文件中默认会有两个关于内存的条目:

maxmem = 2048
memory = 1024

下面的表示 DomU 启动之后分得的内存,这里就是 1G;xen 具有动态扩展内存的机制,因此,上面的 maxmem 则表示该 DomU 最大可以使用 hypervisor 分配的内存,这里就是就是 2G。使用下面的命令来在线扩展内存:

# xen mem-set <domain> 2048
他会将当前的 DomU 的内存增大到 2G。

参考:

http://lists.xensource.com/archives/html/xen-users/2007-05/msg00382.html

Xen DomU 双网卡设置及编号

xen 默认给 DomU 只提供一个网卡,现在要求双网卡,也就是需要再添加一个网桥 xenbr1,原先默认的为 xenbr0。

# cat /etc/xen/scripts/my-network-script
#!/bin/bash
dir=$(dirname “$0″)
“$dir/network-bridge” “$@” vifnum=0  bridge=xenbr0 netdev=eth0
“$dir/network-bridge” “$@” vifnum=1  bridge=xenbr1 netdev=eth1

上面这个脚本要做的事就是再添加一个网桥 xenbr1,接下来修改为可执行权限:

# chmod +x /etc/xen/scripts/my-network-script

修改 xend 配置文件 xend-config.sxp,并重启 xend:

# sed -i 's+(network-script network-bridge)+(network-script my-network-script)+' /etc/xen/xend-config.sxp
# /etc/init.d/xend restart
Continue reading