LoveUnix » AIX -IBM UNIX » 实现Mirror rootvg状况下修改image.data的脚本
让LU留住您的每

一天 让LU博客留住您的每一天
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.