- PR -

3行ずつ読み込んでRCPをするシェルスクリプト

1
投稿者投稿内容
noku
常連さん
会議室デビュー日: 2005/07/21
投稿数: 20
投稿日時: 2005-11-30 18:15
AD側から送られてくるファイルを元にひたすらRCPをすると言う
スクリプトを作成したのですが
結果的に完成したのですがどうも納得いかないというか
効率が悪い気がし皆さんのご意見&アドバイスをお聞きしたいです。
こんなんのがいいんじゃないとか、こうした方が効率がいい等など。

内容はAD側のファイルを信用してUNIX(AIX)では3行ごと事ただ読み込んで
行がある限りひたすらrcpするだけです。

AD側の3行は

ホスト
コピーするファイル
コピーする先のディレクトリ

の繰り返しです。
(ちなみにユーザーは一緒とし"user名@"は使用しないです。)

以下はボクが作ったスクリプトです。

#!/bin/ksh

NUM=1
TIMES=1
COUNT=1

while read LINE
do
echo $LINE > rcp$TIMES-$NUM
NUM=`expr $NUM + 1`

if [[ $COUNT != 3 ]];then
COUNT=`expr $COUNT + 1`
else
printf "rcp " > rcp.$TIMES.exe
printf `cat rcp$TIMES-1`" " >> rcp.$TIMES.exe
printf `cat rcp$TIMES-2`":" >> rcp.$TIMES.exe
print `cat rcp$TIMES-3` >> rcp.$TIMES.exe

chmod 755 rcp.$TIMES.exe
rcp.$TIMES.exe

TIMES=`expr $TIMES + 1`
NUM=1
COUNT=1
fi

done < rcp.txt


コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-12-01 03:30
コード:
#!/bin/ksh


function noku {
awk 'BEGIN { host = ""; src = ""; dst = ""; }
{

if(( NR % 3 ) == 1){
host = $1
}
else if(( NR % 3) == 2){
src = $1
}
else {
dst = $1
# print "rcp " src " " host":"dst
print src " " host":"dst
}

}' $1
}

noku $1



$ chmod 755 noku
$ ./noku rcp.txt | xargs rcp

とか何とか。。。


※ せやから、半角の $1 勝手に消すなって (プ

[ メッセージ編集済み 編集者: コブラ 編集日時 2005-12-01 03:34 ]
portulaca
会議室デビュー日: 2005/11/30
投稿数: 12
投稿日時: 2005-12-01 06:26
動かしてみる気が起きないのですけど、作業ファイルがたくさん残りそうな悪寒。
もう少しシェルスクリプトのことを勉強してください。

テキトーな例:
コード:
#!/bin/ksh
while read -r dsthost && read -r srcfile && read -r dstdir; do
    if [ -n "$dsthost" -a -n "$srcfile" -a -n "$dstdir" ]; then
        rcp "$srcfile" "$dsthost:$dstdir"
    fi
done


noku
常連さん
会議室デビュー日: 2005/07/21
投稿数: 20
投稿日時: 2005-12-01 09:23
コブラさん、portulacaさん
ありがとうございました。
やっぱ効率悪かったですね。
もっと勉強します。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)