我正在尝试创建一个简单的bash脚本来ping许多客户端。如果客户端无法访问,那么它应该在另一台服务器上的数据库上启动更新...我对数据库服务器有无密码的ssh访问权限,所以我试图执行以下操作:
for i in {11..25}
do
if ping -q -c 1 192.168.42.$i > /dev/null 2>&1
then
echo 1
else
ip=192.168.42.$i
ssh admin@192.168.3.240 "mysql -u parkuser -ppass -e 'update SMARTPARK.client SET online=0 where SMARTPARK.ip_client=$ip'"
fi
done
我在使用它时遇到bash: mysql: command not found
错误...显然在db服务器上安装了mysql
答案 0 :(得分:0)
你在单引号内有单引号,它应该是双引号:
ssh admin@192.168.3.240 "mysql -u parkuser -ppass -e 'update SMARTPARK.client SET online=0 where SMARTPARK.ip_client=$ip '"
答案 1 :(得分:0)
它对我来说似乎很好。由于您收到命令未找到错误,可能是您在ssh上$PATH
的问题。尝试手动连接,并运行which mysql
以获取可执行文件的完整路径。就我而言,它是/usr/bin/mysql
,那么你可以尝试在你的陈述中使用它,例如:
ssh admin@192.168.3.240 "/usr/bin/mysql -u parkuser -ppass -e 'update SMARTPARK.client SET online=0 where SMARTPARK.ip_client=$ip '"