SSHで作業するようにライブラリに助言する。主な要件は、ユーティリティsudoを使用した通常の操作です。 私はすでに試してみたし、私が苦しんでいるもの:
- paramiko - STDINパスワードでサービスを提供するための呼び出しの後に試して、まったくsudoすることはできませんが、sudoはそれから次のように入力します。
- pxssh - mmmmmm、非常に遅い、非常に非常に遅い、ぎこちない
- ファブリック - さまざまなユーザーと仕事をするためにあり、パスワードを送信する必要がある場合に限り、理想的な世界でしか使用できないのですか。
sudoで動作する普通のライブラリはありますか、それともありませんか?
回答:
回答№1は0力ではなく sudo
ttyなしで作業するには、ParamikoにあなたにTTYを割り当てさせてはどうでしょうか。
回答№2の場合は0
私はあなたが探していると思う ファブリック.
回答№3の場合は0
あなたは "requiretty"設定で実際の端末なしで動作するようにsudoを設定することができます。 sudoersのマニュアルから:
設定されていると、sudoはユーザーがいるときだけ実行されます。本物の端末にログインしています。この意志 rsh(1)はしていないので、 "rsh somehost sudo ls"のようなことはできません。 ttyを割り当てます。 ttyが存在しない場合はエコーをオフにすることはできませんので、 一部のサイトでは、このフラグを設定してユーザーが表示されないようにします。 パスワード。このフラグはデフォルトではオフです。
これは私にとってパラミコと一緒に働きます。 o何をしているのかにもよりますが、 見通し.
回答№4の場合は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属性を正規表現に設定できると思います)。
回答№5の場合は0
私はまたログイン速度の問題をいくつか抱えてpxssh上記のコードを使用してみましたが、ログインするのに10秒以上かかりました。 original_prompt引数を使用することで問題は解決しました。あなたはoriginal_promptをあなたが最初にマシンにsshしたときに見えるものに設定することを確実にする必要があります。私の場合は ">"で終わりました。
#!/usr/bin/env python
from pexpect import pxssh
host = "hostname.domain"
user = "username"
password = "password"
terminal = pxssh.pxssh()
terminal.login(host, user, original_prompt="[>$]")