0
リモートホストにsshするpythonスクリプトを実行する必要があります。このリモートホスト上で実行する最初のコマンドは "sudo su"です。私はそれのためのパスワードを持っています。次に、ディレクトリにcdしてローカルボックスにファイルをコピーする必要があります。私は2つの方法で試しました。両方とも動作しません。ユーザを変更するためのPython sshコマンド
スクリプト#1:
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostName,username='e0258595',password='<password>')
stdin,stdout,stderr = ssh.exec_command("sudo su; whoami")
stdin.write('password\n')
stdin.flush()
data = stdout.readlines()
for line in data:
print line
出力はまだe0258595です。
スクリプト#2:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostName, username="e0258595", password="<password>")
transport = ssh.get_transport()
session = transport.open_session()
session.set_combine_stderr(True)
session.get_pty()
#for testing purposes we want to force sudo to always to ask for password. because of that we use "-k" key
session.exec_command("sudo su; whoami")
stdin = session.makefile('wb', -1)
stdout = session.makefile('rb', -1)
#you have to check if you really need to send password here
stdin.write("<password>"+'\n')
stdin.flush()
data = stdout.readlines()
for line in data:
print line
この1つだけでハングアップ。
何が問題ですか?
対話型ルートシェルには 'sudo -s'または' sudo -i'を使用してください。 –
また、一度に1つのコマンドを送信してみてください。 – 9000