2017-09-18 92 views
0

私はparamiko putメソッドを使用して、ローカルサーバからリモートサーバにファイルを送信しています。 ただし、リモートからファイルを表示するには、sudo su - userコマンドを実行する際に問題が発生しています。私はまた、ローカルからのアクセス許可を変更しようとしましたが、転送されるとファイルのパーミッションはそのまま残ります。Python paramiko sudoを実行中

import paramiko 

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

ssh.connect(<Host>, username=<User Name>, password=<Password) 

sftp = ssh.open_sftp() 
sftp.put(<Source>, <Destination>) 
sftp.close() 

転送されたファイルをリモートから読み取ることができるようparamkioを使用してsudo su - userコマンドを実行する方法はありますか?

ありがとうございました!

ない
+0

'ssh.exec_command(コマンド)へ伝播しないので、は、単に、open_sshへの呼び出しの前exec_commandsudo su - usernameを使用する方法です'しかし、コマンド –

+0

@ RajarshiDas ...を実行するのは正しいですが、それはそれ自身のシェルで実行されるので、 'open_ssh'の呼び出しによって変更が使われないようになります。 –

答えて

0

あなたがこれを行うことはできません...あなたがそのがsudu-Sフラグにパスワードを期待することを伝えます

import paramiko 

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

ssh.connect(<Host>, username=<User Name>, password=<Password) 

sftp = ssh.open_sftp() 
sftp.put(<Source>, destination_i_CAN_write_to) 
sftp.close() 

#now move the file to the sudo required area! 
stdin, stdout, stderr = ssh.exec_command("sudo -S -p '' mv /uploaded/path/to/file.txt /restricted/sudo/path/file.txt",**kwargs) 
stdin.write(SUDO_PASSWORD + "\n") 
stdin.flush() 

をアップロードした後にファイルを移動するためにsudoを使用して、その周りに仕事を並べ替えることができますどんなにあなたは -p ''フラグはパスワードのプロンプトとして''または空の文字列を使用するためにsudoを伝え

をすることはできません標準入力から来ますこのような変更として、独自のサブシェルで実行exec_commandへの各呼び出しは、バックメインセッション

+0

ありがとうございます。 paramikoを使用する際にパーミッションを変更して保存する方法があるかどうかを知っていますか? – Young

+0

そこにはありません...私はあなたが保護された領域にソフトリンクを使用するあなたのシステムのアクセス許可を混乱させるか、単にあなたがログインしているユーザーに許可を与えることを推測する –

+0

あなたの助けに感謝を見る! – Young

関連する問題