5


paramiko f.ex sudo apt-get update を使用して sudo を持つコマンドで問題が発生しています

ここに私のコードがあります:

try:
    import paramiko
except:
    try:
        import paramiko
    except:
        print "There was an error with the paramiko module"
cmd = "sudo apt-get update"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
    ssh.connect("ip",username="lexel",password="password")
    print "succesfully conected"
except:
    print "There was an Error conecting"
stdin, stdout, stderr = ssh.exec_command(cmd)
stdin.write('password\n')
stdin.flush()
print stderr.readlines()
print stdout.readlines()

これはクイックコードです。sys.exit(1) などを追加する必要があることはわかっていますが、これは単なるデモストレーションです。

これを参考にしました: Jessenoller.com

4

2 に答える 2

1

私は同じ問題を抱えていましたが、これで修正しました:

sudo ファイルに、これを追加するだけです。

デフォルト:your_username !requiretty

または Defaults requiretty を削除します。

また、ユーザーが sudo でコマンドを実行する権限を持っていることを確認してください。

于 2013-10-23T16:43:11.063 に答える
1

Fabricコマンドを持っていsudoます。ssh 接続には Paramico を使用します。あなたのコードは次のようになります。

#fabfile.py
from fabric.api import run, sudo

def update():
    """Run `sudo apt-get update`.

    lorem ipsum
    """
    sudo("apt-get update")

def hostname():
    """Run `hostname`"""
    run("hostname")

使用法:

$ fab update -H example.com
[example.com] Executing task 'update'
[example.com] sudo: apt-get update
...snip...
[example.com] out: Reading package lists... Done
[example.com] out: 

Done.
Disconnecting from example.com... done.

$ fab --display update
Displaying detailed information for task 'update':

    Run `sudo apt-get update`.

        lorem ipsum

$ fab --list
Available commands:

    hostname  Run `hostname`
    update    Run `sudo apt-get update`.

ドキュメントから:

fab ツールを介して使用することに加えて、Fabric のコンポーネントを他の Python コードにインポートして、Paramiko (Fabric 自体が利用する) などによって提供されるものよりも高いレベルで SSH プロトコル スイートへの Python インターフェイスを提供することができます。

于 2011-09-27T20:39:07.523 に答える