我需要在远程服务器上执行mysql命令,但在执行实际的mysql位时似乎遇到了问题
#!/usr/bin/expect -f
spawn /usr/bin/ssh -t root@10.0.0.2
expect "password: "
sleep 1
send "password\r"
sleep 2
/usr/bin/mysql databasename -e "update device_log set status = 'Y' where device_id in ('1','2');"
基本上我想在设备ID 1& 2
上将标志更改为Y.但脚本输出
命令名称无效“/ usr / bin / mysql”
答案 0 :(得分:2)
只需将mysql
命令附加到ssh
命令即可一次运行,如下所示:
#!/usr/bin/expect -f
spawn /usr/bin/ssh -t root@10.0.0.2 /usr/bin/mysql databasename -e "the query"
expect "password: "
sleep 1
send "password\r"
我对expect
的了解不多,但我期待你在mysql
行的尝试实际上并不是期望运行命令的有效语法。
此外:
mysql -h 10.0.0.2 -e "the query"
或ssh -L 3307:localhost:3306 root@10.0.0.2
,然后连接到localhost mysql -h 127.0.0.1 -P 3307
上的TCP端口3307。答案 1 :(得分:0)
听起来/usr/bin/mysql
不是该远程服务器上mysql
二进制文件的路径。您可以只使用mysql
,假设二进制文件位于该远程服务器PATH
中的某个位置。否则你将不得不去找出二进制实际所在的位置并相应地改变绝对路径。