我正在尝试创建一个简单的bash脚本,它将对许多客户端进行平分。如果客户端不可达,则应在另一台服务器上的db上启动更新.我对db服务器有无密码的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错误.显然,mysql安装在db服务器上。
发布于 2016-04-18 15:12:26
对我来说似乎挺好的。由于您得到的命令没有找到错误,所以可能是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 '"发布于 2016-04-18 15:03:10
单引号在单引号中,应该是单引号:
ssh admin@192.168.3.240 "mysql -u parkuser -ppass -e 'update SMARTPARK.client SET online=0 where SMARTPARK.ip_client=$ip '"https://stackoverflow.com/questions/36697557
复制相似问题