我需要远程启动执行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程序
任何人都可以帮忙解释或帮我确定这里发生的事情吗?
我对乐队援助和不同方法持开放态度,谢谢!
答案 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的所有命令也可能是危险的!