この記事では主に Python の paramiko モジュールで実装されたリモート制御と送信の例を紹介します。必要な方は参考にしてください。以下のように共有したいと思います:
1 インストール
sudo pip install paramiko
#LINUX下执行shell ssh username@ip #输入密码后就可以对远程机器进行操作 ssh username@ip command #输入密码后远程机器就执行command
import paramiko hostname = '10.1.111.111' username = 'root' password = '111111' port = 22 #整数不是字符串 paramiko.util.log_to_file('paramiko.log') ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机 ssh.connect(hostname=hostname,port=port,username=username,password=password) stdin, stdout, stderr = ssh.exec_command("ls") #远程执行shell命令 print(stdout.readlines()) #输出回显结果 ssh.close()
コマンドをリモートで実行するときに対話が発生した場合は、stdin.write("") を使用して対話を完了できます。
(1) stdin からパスワードを受け取るには、sudo の後に -S を追加します。
(2) コマンドの最後として stdin.write('passwordn') の最後に n を追加します。それ以外の場合は、サーバー待ち続けます。
a='~/Videos' b='aaa' ssh.exec_command('cd %s;mkdir %s'%(a,b)) #aaa在a目录下 ssh.exec_command('mkdir aaa') #aaa在缺省目录下ユーザー名が指定されており、ユーザーパスワードを入力する必要がありますコマンドの実行後; ユーザー名が指定されていない場合は、コマンドの実行後にユーザー名とパスワードが必要になります。 SFTPClient オブジェクト。以前の SSH 接続を再利用します。そのため、sftp を使用してファイルを転送する場合、ユーザーを再度認証する必要はありません。ファイル
アップロードを実装します:
stdin, stdout, stderr = ssh.exec_command('sudo -S ls') stdin.write('password\n') stdin.flush()
または次のようにファイルのアップロードとダウンロードを実装します:
import paramiko import threading def ssh_cmd(ip,port,username,passwd,cmd): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip,port,username,passwd) for m in cmd: stdin, stdout, stderr = ssh.exec_command(m) print(stdout.readlines()) ssh.close() if __name__=='__main__': cmd = ['ls','ifconfig'] a=threading.Thread(target=ssh_cmd,args=(ip,port,username,passwd,cmd)) a.start() a.join()
Official Document
以上がPythonのparamikoモジュールを使った遠隔制御と送信の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。