离开Xcode Default
和#!/usr/bin/expect -f
;现在我收到了错误:
#!/bin/bash
代码:
./autom.sh: line 7: syntax error near unexpected token `}'
./autom.sh: line 7: `"*\#" { send "cd /var-tmp"; send "./scmd.sh -tmp /var/tmp -plugins /var/tmp/plugins -dmore \r"; }'
答案 0 :(得分:1)
不是修复你在bash和期望之间的界面,而是更容易停止使用expect:
#!/bin/bash
ip_file=hst.txt
while read -r ip; do
ssh "$ip" 'bash -s' <<'EOF'
cd /var-tmp || { echo "Could not cd to /var-tmp" >&2; exit 1; }
./scmd.sh -tmp /var/tmp -plugins /var/tmp/plugins -dmore
EOF
done <"$ip_file" >>logfile.txt
答案 1 :(得分:0)
这似乎是一个bash脚本,期望代码混入其中。基于错误的EOD
,我猜这应该是一个HERE文档,但你已经失去了实际的期望调用。也许试试这个:
#!/bin/bash
set i 0
IP_FILE="./hst.txt"
for i in `cat $IP_FILE`; do
expect - <<EOD
spawn ssh "@$i"
expect {
"*\#" { send "cd /var-tmp\r"; send "./scmd.sh -tmp /var/tmp -plugins /var/tmp/plugins -dmore \r"; }
"*\#" { puts "ejecucion exitosa" }
}
EOD
done>>logfile.txt
编辑:在第一个cd命令后添加了\r
并修复了spawn
的拼写。
编辑#2:而且,正如@CharlesDuffy所提到的,用for
读取行并不是一个好主意。这样的事情更好:
#!/bin/bash
set i 0
IP_FILE="./hst.txt"
while read -r i; do
expect - <<EOD
sapwn ssh "@$i"
expect {
"*\#" { send "cd /var-tmp"; send "./scmd.sh -tmp /var/tmp -plugins /var/tmp/plugins -dmore \r"; }
"*\#" { puts "ejecucion exitosa" }
}
EOD
done < "$IP_FILE" >> logfile.txt