通过SSH协助图书馆工作。主要要求是使用实用程序sudo进行正常操作。 我已经尝试过,我正在受苦:
是否有使用sudo的普通库?
答案 0 :(得分:0)
我认为您正在寻找fabric。
答案 1 :(得分:0)
您可以将sudo配置为在没有'requiretty'设置的真实终端的情况下工作。来自sudoers手册:
如果设置,sudo将仅在用户登录到真实tty时运行。这将 不允许“rsh somehost sudo ls”之类的东西,因为rsh(1)没有 分配一个tty。 因为当没有tty存在时无法关闭回声, 某些站点可能希望设置此标志以防止用户输入可见 密码。默认情况下,此标志处于关闭状态。
这适用于paramiko。根据您在做什么,您还可以查看类似pexpect的内容。
答案 2 :(得分:0)
为什么不让Paramiko为你分配一个TTY,而不是强迫sudo
无法工作?
答案 3 :(得分:0)
起初我和pxssh有同样的问题:它非常慢! 我发现这是一种让它更快运行的方法:
#!/usr/bin/python
import pxssh
import getpass
try:
s = pxssh.pxssh()
s.PROMPT = "#"
hostname = raw_input('hostname: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login(hostname, username, password, auto_prompt_reset=False)
s.sendline('ls') # run a command
s.prompt() # match the prompt
print(s.before) # print everything before the prompt.
s.sendline('ls -l /tmp') # run a command
s.prompt() # match the prompt
print(s.before) # print everything before the prompt.
s.logout()
except pxssh.ExceptionPxssh as e:
print("pxssh failed on login.")
print(e)
s.PROMPT = "#"
中的关键部分为auto_prompt_reset=False
和s.login()
此方法要求您知道提示的模式(在我的情况下,它是“#”,我认为PROMPT属性可以设置为正则表达式。)
答案 4 :(得分:0)
我在pxssh上的登录速度也遇到了一些问题。我尝试使用上面引用的代码,但仍然只看到10秒以上才能登录。使用original_prompt参数为我修复了问题。您需要确保将original_prompt设置为您第一次进入计算机时所看到的内容,在我的情况下结束于'>'。
#!/usr/bin/env python
from pexpect import pxssh
host = 'hostname.domain'
user = 'username'
password = 'password'
terminal = pxssh.pxssh()
terminal.login(host, user, original_prompt='[>$]')