我写了一个期望脚本,它读取脚本文件并远程执行脚本。
1481701708951_migration.sh(bash脚本)
此脚本选择应执行DDL语句的数据库列表。
db="testdb"
username="root"
password=""
mysql="mysql -u root $db"
$mysql -e "select * from dblist" | grep -v SCHEMANAME > tmp.txt
echo "Migration started..."
while read line
do
mysql="mysql -u root $line"
$mysql -e "create table test(id int)"
done < tmp.txt
echo "Migration over..."
期望脚本
#!/usr/bin/expect -f
set fh [open 1481701708951_migration.sh r]
set contents [read $fh]
close $fh
spawn ssh sampleusername@192.168.1.1 "bash -c '$contents'"
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "samplepassword\r"
}
}
过去工作正常。但现在,它正在抛出错误bash: line 4: mysql: command not found
。有人可以帮我解决这个问题吗?
感谢。