我很新bash。我試圖達到一個很容易的事情,但它看起來像非常複雜...問題與我的bash腳本
我想從文件(IP地址,用戶名,密碼)讀取變量,並連接到防火牆來改變它們。
該文件大約100行,我試圖逐一閱讀,從第二列,第一個用戶名選擇防火牆的IP地址,並從第三和第四列傳遞,第二個用戶名並從第五和第六列。 文件看起來像:
Office1 IP uname1 pass1 uname2 pass2
Office2 IP uname1 pass1 uname2 pass2
所有原糖由製表符分隔 的腳本看起來像這樣的:
#!/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
腳本化telnet會話可能導致精神錯亂。什麼是防火牆平臺,它有任何配置API? – MattH
請勿使用貓的TEST.txt | awk'{print $ 2}''''!改用''awk'{print $ 2}'TEST.txt'''。 'EOF'應該在'完成'之後,而不是之前。 – TrueY
似乎你在'TEST.txt'中只有一行。如果有多行,這個腳本肯定沒有做它應該做的。 – TrueY