![编写登录服务器的shell脚本,登录后运行命令](https://linux22.com/image/8849/%E7%BC%96%E5%86%99%E7%99%BB%E5%BD%95%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84shell%E8%84%9A%E6%9C%AC%EF%BC%8C%E7%99%BB%E5%BD%95%E5%90%8E%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4.png)
我编写了一个用于登录服务器的 shell 脚本,并运行一些命令来启动和停止在其上运行的进程,所以我尝试了下面的代码,但它显示错误,请帮助我处理该脚本。
for i in 'cat /tmp/hb` //server name would be saved in /tmp/hb
ssh $i
j=hostname
If $i -ne $j
then
echo "server not logged in"
else echo "Server logged in"
if
$i == $j
sudo /opt/OV/bin/opcagt -status |grep -i ”message agent are not buffering"
elif
sudo /opt/OV/bin/opcagt -stop
sudo /opt/OV/bin/opcagt -start
sudo /opt/OV/bin/opcagt -stop
sudo /opt/OV/bin/opcagt -status |grep -i ”message agent are not buffering
elif
sudo /opt/OV/bin/opcagt -kill
sudo /opt/OV/bin/opcagt -start
sudo /opt/OV/bin/opcagt -status |grep -i ”message agent are not buffering
fi
上面的脚本给出错误:
./heart: syntax error at line 2: `ssh' unexpected
答案1
您的第一个问题是要由 a 循环的块for
需要有一个do
anddone
块围绕它:
for f in `cat file`
do
...
done
第二个问题是循环体的其余部分(语句if
不会在ssh
目标主机上的会话内执行。您必须以某种方式将if
语句推送到目标主机并在那里执行脚本。