2008-7-10 14:40
gelf123
实现Mirror rootvg状况下修改image.data的脚本
要求:
rootvg做了mirror,要做mksysb备份,但是为了恢复到单盘方便,所以想去掉mirror关系。
以前听说过要改image.data的,今天正好有时间试验一下。
为了摆脱繁琐、而且容易出错的修改步骤,所以想写个脚本实现自动化运行。
搜索了论坛里老大的帖子[url]http://bbs.loveunix.net/thread-45445-1-1.html[/url] ,写得很详细,不过因为image.data的格式中顶头有个tab符号,而脚本处理完成之后就没有了tab符号,导致mksysb认为image.data的格式错误,而处理起来有点复杂。
参考这个帖子我进行了一些修改,这个脚本即使多次运行也不会搞乱image.data,自己简单测试了一下还没发现啥问题。给大家共享一下。也希望大家给测试测试。
-------------
[code]IMAGE=/image.data
lineNo=0
while read line;do
lineNo=`expr $lineNo + 1`
if [ "$(echo $line |awk -F"= " '{print $1}')" = "COPIES" ];then
copys=`echo $line |awk -F"= " '{print $2}'`
(echo "$lineNo";echo "s/${copys}/1";echo 'w';echo 'q')|ed -s $IMAGE
fi
if [ "$(echo $line |awk -F"= " '{print $1}')" = "PP" ];then
PPs=`echo $line |awk -F"= " '{print $2}'`
srcSTR=$PPs
destSTR=`expr $PPs / $copys`
(echo "$lineNo";echo "s/${srcSTR}/${destSTR}";echo 'w';echo 'q')|ed -s $IMAGE
fi
done<$IMAGE
[/code]
[[i] 本帖最后由 gelf123 于 2008-7-10 15:12 编辑 [/i]]
2008-7-10 15:40
ChaosLegion
:lu11: :lu11: :lu11:
2008-7-10 19:49
koyuu
参考了beginner-bjl老大的脚本,写的修改image.data 为做alt_disk_install用的 ,mksysb也可以
#!/usr/bin/ksh
mkszfile
export IFS='\\'
while read line; do
if [[ "`echo $line |awk '{print $1}'`" = "COPIES=" ]]
then
copies=`echo $line |awk '{print $2}'`
fi
echo $line | awk 'BEGIN {OFS=FS="= "}{if($1 ~ "PP$") print $1,$2/copies; else print $0}' copies=$copies
done </image.data | \
sed '/COPIES/s/[23]/1/g' > /image.data.new
cat /image.data.new > /image.data
[[i] 本帖最后由 koyuu 于 2008-7-10 20:07 编辑 [/i]]
2008-7-10 21:10
beginner-bj
其实,我这个写得不好啦。用awk数组写,应该更简洁。当年不太会。
2008-7-10 21:57
beginner-bj
这样应该就OK了。
awk '{a[$1]=$2} /COPIES=/{$2=1} /PP=/{$2=a["LPs="]};{print}' /image.data >/image.data.new
cat /image.data.new >/image.data
2008-7-10 22:16
xuandhe
刚刚测试了,一下,还真不错;P ;P
2008-7-10 22:28
qian1110
[quote]原帖由 [i]beginner-bj[/i] 于 2008-7-10 21:57 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=807556&ptid=86964][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
这样应该就OK了。
awk '{a[$1]=$2} /COPIES=/{$2=1} /PP=/{$2=a["LPs="]};{print}' /image.data >/image.data.new
cat /image.data.new >/image.data [/quote]
偶像
麻烦签个字吧
2008-7-10 23:12
炸鸡
麻烦签在我的大腿上,表明我们的亲密关系。:lol
2008-7-11 01:13
老农
签在鸡鸡上:lu3:
2008-7-11 10:06
ChaosLegion
[quote]原帖由 [i]beginner-bj[/i] 于 2008-7-10 21:57 发表 [url=http://loveunix.com/redirect.php?goto=findpost&pid=807556&ptid=86964][img]http://loveunix.com/images/common/back.gif[/img][/url]
这样应该就OK了。
awk '{a[$1]=$2} /COPIES=/{$2=1} /PP=/{$2=a["LPs="]};{print}' /image.data >/image.data.new
cat /image.data.new >/image.data [/quote]
太彪悍了..
2008-7-11 10:10
炸鸡
前几个月有个案件,一对男女出来偷情,大家都各有家庭的。持续了好几年了。
某天,男的发现女的再在外面勾汉子,然后就在女的私处纹上了自己的英文缩写,以示警戒。
那个案件很精彩,第一次开审,就有陪审员因为受不住刺激要退出。
2008-7-11 10:11
qian1110
[quote]原帖由 [i]炸鸡[/i] 于 2008-7-11 10:10 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=807662&ptid=86964][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
前几个月有个案件,一对男女出来偷情,大家都各有家庭的。持续了好几年了。
某天,男的发现女的再在外面勾汉子,然后就在女的私处纹上了自己的英文缩写,以示警戒。
那个案件很精彩,第一次开审,就有陪审 ... [/quote]
缩写 jj???
2008-7-11 11:48
tyrone.dev
有点麻烦,还是用perl简单,只改了PP
#!/usr/bin/perl
#
while( <> ) {
s/PP=([0-9]+)/"PP=" . $1*0.5/e;
print $_;
}
2008-7-11 12:36
beginner-bj
[quote]原帖由 [i]tyrone.dev[/i] 于 2008-7-11 11:48 发表 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=807712&ptid=86964][img]http://www.loveunix.net/images/common/back.gif[/img][/url]
有点麻烦,还是用perl简单,只改了PP
#!/usr/bin/perl
#
while( ) {
s/PP=([0-9]+)/"PP=" . $1*0.5/e;
print $_;
} [/quote]
你这个不符合要求了,因为有的时候要/1,有的时候要/2,有的时候要/3,并不是总是/2。
2008-7-11 12:37
beginner-bj
回复 #7 qian1110 的帖子
:handshake
你签鸡哥身上吧,呵呵
2008-7-11 12:42
tyrone.dev
#!/usr/bin/perl
#
while( <> ) {
s/PP=([0-9]+)/"PP=" . $1*0.5/e;
print $_;
}
2008-7-11 12:45
小猪
[quote]原帖由 [i]beginner-bj[/i] 于 2008-7-10 21:57 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=807556&ptid=86964][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
这样应该就OK了。
awk '{a[$1]=$2} /COPIES=/{$2=1} /PP=/{$2=a["LPs="]};{print}' /image.data >/image.data.new
cat /image.data.new >/image.data [/quote]
绝对偶像:lu11: :lu11:
2008-7-11 12:49
tyrone.dev
发错了!
#!/usr/bin/perl
#
my $copies = 1 ;
while( <> ) {
if ( m/COPIES=([0-9]+)/ == 1 ) {
$copies = $1 ;
}
s/PP=([0-9]+)/"PP=" . $1\/$copies/e;
print $_;
}
2008-7-12 14:37
wgjwillis
好事签在胳肢窝好~
2008-7-13 13:12
koyuu
崇拜一下,继续努力向老大们学习
2008-7-14 16:11
ttzz123
[quote]原帖由 [i]beginner-bj[/i] 于 2008-7-10 21:57 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=807556&ptid=86964][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
这样应该就OK了。
awk '{a[$1]=$2} /COPIES=/{$2=1} /PP=/{$2=a["LPs="]};{print}' /image.data >/image.data.new
cat /image.data.new >/image.data [/quote]
老大们给帮忙看看:
# mkszfile
# awk '{a[$1]=$2} /COPIES=/{$2=1} /PP=/{$2=a["LPs="]};{print}' /image.data >/image.data.new
# cat /image.data.new >/image.data
# mksysb -X /oracle/mksysb.bak
/usr/bin/mksysb[22]: TMPSZ = 1 * 256 * : 0403-053 Expression is not complete;
more tokens expected.
[[i] 本帖最后由 ttzz123 于 2008-7-14 16:13 编辑 [/i]]
2008-7-14 16:23
ttzz123
[quote]原帖由 [i]tyrone.dev[/i] 于 2008-7-11 12:49 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=807731&ptid=86964][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
发错了!
#!/usr/bin/perl
#
my $copies = 1 ;
while( ) {
if ( m/COPIES=([0-9]+)/ == 1 ) {
$copies = $1 ;
}
s/PP=([0-9]+)/"PP=" . $1\/$copies/e;
pri ... [/quote]
哪里有点问题?
# mkszfile
# cat z.perl
#!/usr/bin/perl
#
my $copies = 1 ;
while( <> ) {
if ( m/COPIES=([0-9]+)/ == 1 ) {
$copies = $1 ;
}
s/PP=([0-9]+)/"PP=" . $1\/$copies/e;
print $_;
}
# ./z.perl /image.data |grep COPIES
COPIES= 2
COPIES= 2
COPIES= 2
COPIES= 2
COPIES= 2
COPIES= 2
COPIES= 2
COPIES= 2
COPIES= 2
2008-7-14 17:07
beginner-bj
不知道你要干嘛
2008-7-14 17:23
beginner-bj
[quote]原帖由 [i]ttzz123[/i] 于 2008-7-14 16:11 发表 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=808735&ptid=86964][img]http://www.loveunix.net/images/common/back.gif[/img][/url]
老大们给帮忙看看:
# mkszfile
# awk '{a[$1]=$2} /COPIES=/{$2=1} /PP=/{$2=a["LPs="]};{print}' /image.data >/image.data.new
# cat /image.data.new >/image.data
# mksysb -X /oracle/mksysb.ba ... [/quote]
AIX版本是什么?
diff /image.data.new /image.data 看看啥区别?
看错误提示,应该是有COPIES是空值。
页:
[1]
2
3
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.