Bash 运行ssh远程命令和grep获取字符串
我想编写脚本,远程运行一些ssh远程命令。我所需要的只是将已执行命令的输出grep为某个特殊字符串,这将意味着该命令已成功执行。例如,当我运行此命令时:Bash 运行ssh远程命令和grep获取字符串,bash,shell,ssh,grep,Bash,Shell,Ssh,Grep,我想编写脚本,远程运行一些ssh远程命令。我所需要的只是将已执行命令的输出grep为某个特殊字符串,这将意味着该命令已成功执行。例如,当我运行此命令时: ssh user@host "sudo /etc/init.d/haproxy stop" 我得到输出: Stopping haproxy: [ OK ] 我所需要的就是找到“OK”字符串,以确保命令成功执行。如何执行此操作?添加grep并检查退出状态: ssh user@host "sudo /etc/init.d/haproxy s
ssh user@host "sudo /etc/init.d/haproxy stop"
我得到输出:
Stopping haproxy: [ OK ]
我所需要的就是找到“OK”字符串,以确保命令成功执行。如何执行此操作?添加
grep
并检查退出状态:
ssh user@host "sudo /etc/init.d/haproxy stop | grep -Fq '[ OK ]'"
if [ "$#" -eq 0 ]; then
echo "Command ran successfully."
else
echo "Command failed."
fi
command && { echo "Command ran successfully."; }
command || { echo "Command failed."; }
if command; then echo "Command ran successfully."; else echo "Command failed."; fi
您也可以将grep
放置在外部
ssh user@host "sudo /etc/init.d/haproxy stop" | grep -Fq '[ OK ]'
检查退出状态的其他方法:
ssh user@host "sudo /etc/init.d/haproxy stop | grep -Fq '[ OK ]'"
if [ "$#" -eq 0 ]; then
echo "Command ran successfully."
else
echo "Command failed."
fi
command && { echo "Command ran successfully."; }
command || { echo "Command failed."; }
if command; then echo "Command ran successfully."; else echo "Command failed."; fi
您还可以捕获输出并将其与案例
或[[]]
进行比较:
OUTPUT=$(exec ssh user@host "sudo /etc/init.d/haproxy stop")
case "$OUTPUT" in
*'[ OK ]'*)
echo "Command ran successfully."
;;
*)
echo "Command failed."
esac
if [[ $OUTPUT == *'[ OK ]'* ]]; then
echo "Command ran successfully."
else
echo "Command failed."
fi
您可以嵌入$(exec sshuser@host“sudo/etc/init.d/haproxy-stop”)
直接作为表达式,而不是根据需要将输出传递给变量
如果/etc/init.d/haproxy stop
将消息发送到stderr,只需将其重定向到stdout即可捕获:
sudo /etc/init.d/haproxy stop 2>&1