我在bash上很糟糕,我嘗試使用openSSH將腳本連接到所有交換機,以便進行一些配置。Shebang導致腳本失敗
我創建了一個包含我所有25個交換機的數組,然後我用一個循環來打開每個人的SSH連接。
因爲我在Windows上並使用bash,所以我剛剛安裝了Cygwin。
但是,我不得不用純文本來使用expect和寫密碼,因爲交換機很差,這對我來說是最好的方式(我不會手動將RSA密鑰放在每臺交換機上,因爲它會佔用我儘可能多地在每臺交換機上手動配置配置)。
我使用shebang#!/ usr/bin/expect -f使bash識別expect。當我這樣做時,期望的語法(spawn,expect,interact)完美地工作,但我的數組不起作用。
我收到以下錯誤信息:
多餘的字符近距離報價 在執行 「arrayName中=(」 172.21.21.20" , 「172.20.55.55」 ......「
後!當我改變了家當,和使用#/斌/慶典,希望不再被發現:
./stationsnmp.sh:行20:重生:找不到命令無法讀取 ./stationsnmp.sh:line 24:send:command not found could not read file「assword」:no such file or directory ./stationsnmp.sh:line 27: send:command not found ./stationsnmp .SH:第28行:互動: 找不到命令
我真的不是在bash親,這說明我不能讓這個小問題...一些幫助將受到歡迎。
編輯:下面是我的代碼
#!/bin/bash
switch=("172.20.0.229" "172.20.0.232" "172.20.0.233" "172.21.0.15" "172.21.0.16" "172.21.2.1" "172.20.2.250" "172.21.3.1" "172.20.3.250" "172.21.4.1" "172.20.4.250" "172.21.6.1" "172.20.6.250" "172.21.7.1" "172.20.7.250" "172.21.8.1" "172.20.8.250" "172.20.9.250" "172.21.9.1" "172.21.10.1" "172.20.10.250" "172.21.11.1" "172.20.11.250" "172.21.12.1" "172.21.12.250")
nmb=`echo ${#switch[@]}`
set timeout 3
for ((ii=0; ii<=$nmb; ii++))
#for ii in {0..${#switch[@]}}
do
if [ ${switch[$ii]:5:1} -eq 1 ]
then
ipdc=`echo ${switch[ii]} | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.'`"10"
spawn ssh [email protected][$ii]
expect "*assword*"
send "PASS\r"
interact
exit
fi
done
這是很難診斷你的問題,如果你不告訴我們,導致了它的代碼。 – rojomoke
請原諒我,我添加了代碼。謝謝 – Aeron