Bash脚本检查权限,可在远程运行命令

时间:2018-12-27 22:52:16

标签: linux bash unix

我有一台本地开发计算机,并且从我的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

1 个答案:

答案 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