2016-09-21 124 views
-1

我试图在使用PuTTY的远程CentOS机器上运行一些命令。我使用下面的命令:当从PuTTY命令行执行“sudo需要一个tty”时,“Sudo”失败

putty.exe -ssh [IP] -l [user] -pw [password] -m [Script] 

哪里[Script]是包含我要运行的命令的.txt文件。问题是,命令中的一种需要sudo,当腻子尝试运行它,我得到一个错误:

sudo requires a tty

是交代不清我的事情是,如果我不给一个脚本启动会话,然后运行手动命令从脚本,它工作正常。我试过使用-load而不是-ssh,并没有什么区别。

出于安全原因,我无法更改我的sudoers文件中的requiretty设置,这是我所能找到的唯一解决方案。还有其他选择吗?

回答

0

sudo需要TTY /交互式会话。

相反,PuTTY/Plink -m交换机默认使用非交互式会话。使用-t switch覆盖。

putty.exe -ssh [IP] -l [user] -pw [password] -t -m [Script] 
+0

我没有意识到-m选项做到了。添加-t修复了sudo错误。它仍然没有工作,但我认为新问题是由于我试图运行的脚本,而不是PuTTY。谢谢! – CWRules

0

阅读错误:sudo requires a tty。就是说,一个交互式shell。你必须找到另一种做这些特权指示的方法。例如,您可以使用作为根以基于密钥的身份验证登录

+0

这应该是用于测试自动化,所以使用交互式shell将不起作用。我会研究基于密钥的身份验证。 – CWRules

+0

从技术上讲,您可以使用密码登录,但这在安全方面是一个非常糟糕的主意。也许这里真正的问题是*为什么你需要root权限*?如果为了与某些设备进行通信,udev规则应该足够了。 – MayeulC