0

私はbashにかなり慣れていません。私は非常に簡単なことを達成しようとしていますが、非常に複雑に見えます...

ファイルから変数 (IP アドレス、ユーザー名、パスワード) を読み取り、ファイアウォールに接続してそれらを変更しようとしています。

ファイルは約 100 行あり、1 つずつ読み取ろうとしています。2 列目からファイアウォールの IP アドレスを選択し、最初のユーザー名とパスを 3 列目と 4 列目から、2 番目のユーザー名とパスを 5 列目と 6 列目から選択しました。桁。ファイルは次のようになります。

Office1    IP   uname1 pass1       uname2  pass2
Office2    IP   uname1 pass1       uname2  pass2

すべての raw はタブで区切られています。スクリプトは次のようになります。

   #!/bin/bash
   office=`awk '{print $1}' TEST.txt`
   user1=`awk '{print $3}' TEST.txt`
   user2=`awk '{print $5}' TEST.txt`
   password1=`awk '{print $4}' TEST.txt`
   password2=`awk '{print $6}' TEST.txt`
   /usr/bin/expect <<EOF 
   for p in `cat TEST.txt | awk '{print $2}'`
   do
   # echo $user1 ", " $password1", " $user2", "$password2"
   set timeout 20
   spawn telnet $p
   expect "login:"
   send "cipollone"
   send \r
   expect "password:"
   send "mypass"
   send \r
   expect ">"
   send "set admin user $user1 password $password1 privilege all"
   send \r
   expect ">"
   send "set admin user $user2 password $password2 privilege all"
   send \r
   expect ">"
   send "save"
   send \r
   expect ">"
   send "exit"
   send \r
   send \r
   send \r
   # echo $office $p "DONE"
   # echo \r
   # echo $office $p "DONE" >>  results.txt 
   # echo \r >> results.txt
   exit
   EOF
   done < TEST.txt
4

2 に答える 2

4

スクリプトの一般的な構造は次のとおりです。

while read office ip user1 password1 user2 password2
do
  /usr/bin/expect <<EOF
  ...
EOF
done < TEST.txt
于 2013-06-27T09:31:54.160 に答える