私は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