我正在使用Paramiko进行SSH和编辑配置文件。文件本身需要sudo权限才能进行编辑。到目前为止,这还不是问题,因为我已经echo <sudopw>| sudo <command>
在脚本中处理了其他sudo命令。
但是,当我尝试使用sed编辑此文件时,没有任何反应。stderr
产生:sudo: no tty present and no askpassprogram specified
这是我的代码:
stdin, stdout, stderr = client.exec_command
('echo <sudopassword> | sudo sed -i -e \"\\$aAllowUsers\" /etc/ssh/sshd_config)')
我已经尝试过使用解决方案,invoke_shell
但似乎没有任何效果。任何编辑此文件的解决方案都将有所帮助。
编辑:这已经解决了! 不要使用get_pty
。在“ sudo”之后立即使用sudo的-S选项。
如果您阅读错误消息
sudo: no tty present and no askpass program specified
然后您可以轻松找到解决方案:将-t
选项添加到ssh命令中:
-t
强制伪终端分配。这可用于在远程计算机上执行任意基于屏幕的程序,这可能非常有用,例如在实现菜单服务时。-t
即使ssh没有本地tty,多个选项也会强制tty分配。
关于Paramiko,存在一些相关问题,有几种不同的解决方法:
get_pty
ssh的方法Channel
获得伪终端(类似于告诉ssh
这样做)-S
选项sudo
,然后在标准输出上发送密码。我已经安装了一个lemp docker容器W/Ubuntu 16.04、Nginx、Mariadb和PHP 7.0,并设置了postfix和基本的ssh功能,这些功能都能正常工作。我已经创建了一个具有sudo权限的非root用户(在sudo组中),但是当我试图使用sudo时,我得到了一个错误 Sudo:没有tty存在,也没有指定askpass程序 这种情况发生在、、等。 我使用visudo进入文件
我正在尝试使用Makefile编译一些源代码。在makefile中,有一堆命令需要作为运行。 当我从终端编译源代码时,一切都很好,make在第一次运行命令等待密码时暂停。一旦我键入密码,使简历和完成。 但我希望能够在NetBeans中编译源代码。因此,我启动了一个项目,并向netbeans展示在哪里可以找到源代码,但当我编译该项目时,它会出现错误: 当它第一次命中命令时。 我已经在互联网上查找了这
我有一个php页面,它试图运行服务重启,使用: 我需要编辑我的sudoers文件来实现这一点。因此: 和 当失败时,作为一个测试,我运行: 我运行了一个shell_exec,没有使用sudo命令: 这返回了预期的“Apache”。于是我跑了: 返回“uid=48(apache)gid=48(apache)groups=48(apache),10(wheel)” 我对照正在做同样事情的工作系统检查了
问题内容: 没有系统更改,每次尝试从中安装gem时,都会因该错误而开始失败,尽管我什至都看不到为什么调用sudo,因为gems安装在本地rvm目录中。 有人看过吗? 问题答案: 要让詹金斯安装gem,他需要属于rvm组: 在debian中,这意味着: 至少对我有用。
我想自动化一个构建-目前,在我的开发过程中,所以不涉及安全的东西。 从构建器(Qt Creator)运行脚本时,不会提示我输入sudo密码,但会出现错误 我已经找到了一些解决办法,但就是不起作用...我错过了什么? 确切代码: 我按照上面回答的建议做了:编辑了visudo并添加了脚本...甚至还添加了Qmake... 同样的错误 编辑:在问完这个问题后,我发现了一个类似的建议问题:https://