在远程上运行sudo scripts / bash命令

时间:2018-05-07 13:25:07

标签: linux bash ssh sudo

我需要远程启动执行sudo任务的bash脚本,例如chmod和ntpdate以及回显到gpio。

一个cron工作可能是其中一些最好的解决方案,但是cron给我带来了麻烦。如果可以的话,我想转发这个场地......

我已经确认我的脚本在本地工作(我可以直接进入机器并在没有打嗝的情况下运行它们。)

但是,如果我尝试远程运行它们:(这是在C ++系统调用中)

ssh user @ pc' bash -s' < /home/user/myScript.sh

sudo命令失败。

sudo chmod失败:没有tty存在且没有指定askpass程序 echo to gpio失败:写错误:设备或资源忙 sudo ntpdate失败:没有tty存在且没有指定askpass程序

任何人都可以帮忙解释或帮我确定这里发生的事情吗?

我对乐队援助和不同方法持开放态度,谢谢!

1 个答案:

答案 0 :(得分:2)

您已经找到了问题:

  

sudo chmod失败:没有tty存在且没有指定askpass程序

如果您通过ssh运行shell脚本并且脚本想要运行命令sudo,则sudo本身会询问用户密码。但是ssh会话不是一个tty! sudo现在应该如何提示输入密码以及如何获取密码?

如果您在脚本中提供密码,则可以执行此操作(如果其他人可以阅读该脚本,则会导致非常危险!)

script.sh:

  

回显“你的密码”| sudo -S

作为替代解决方案,您可以与更具特权的用户一起运行ssh会话。

  

ssh privileged_user @ pc'bash -s'< /home/user/myScript.sh

所有这些都伴随着一些危险。使用更高权限的用户运行来自cript的所有命令也可能是危险的!