我有一台本地开发计算机,并且从我的bash脚本向远程服务器发送命令。
如何编写bash代码以检查是否允许运行远程命令,以便可以处理脚本中的成功/失败响应?
或者,如何捕获输出,以便可以解析输出并检测是否成功。解析的困难在于ssh命令可能会触发密码提示,因此我不会对此进行干预。
该bash脚本使用ssh -qt
发送远程命令
命令
ssh user@host -qt "sudo -u www /usr/local/bin/php /mnt/data/script.php"
输出:
[sudo] password for xxx:
Sorry, user xxx is not allowed to execute '/usr/local/bin/php /mnt/data/script.php' as www on host.domain.com
答案 0 :(得分:1)
假设上面的user != root
:您不能-如果要在通常设置的Linux框中无法读取/etc/sudoers
或/etc/sudoers.d/*
'不是根,所以除了反复试验之外,没有任何事情要做。
关于捕获结果-这很简单(当然,根据您在那做的事情来解析它是一个不同的故事)。
output=$( ssh user@host -qt "sudo -u www /usr/local/bin/php /mnt/data/script.php" 2>&1 )
执行后(并且您输入sudo
的密码)
echo $? # gives you the return-code of what happened on the far end, if it's a success that should be 0
echo $output # gives you the strings to parse