pexpect和paramiko的使用

paramiko示例

使用密匙登录到服务器,执行命令并回显

import paramiko # conda install  paramiko

private_key = paramiko.RSAKey.from_private_key_file('path_to_keyfile')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname = server_ip, port=server_port,\
            username=server_username, pkey=private_key)
stdin, stdout, stderr = ssh.exec_command('ifconfig')

result = stdout.read()
print(result.decode())
ssh.close()

pexpect示例

使用密匙通过 ssh同步本地和远程文件夹。

windows系统下,脚本中不能使用 pexpect 包,所以该脚本不支持windows。

import pexpect  # conda install pexpect
# private_key = $HOME/.ssh/somekey
# 必须在 $HOME/.ssh/ 目录下
# chmod 700 /home/userName/.ssh/somekey
# private_key = '/home/userName/.ssh/somekey'

cmd:rsync  --delete -avzP  /本地文件夹路径/ -e 'ssh -p port_num_str -i private_key ' root@远程服务器IP::rsync模块名

ssh = pexpect.spawn(cmd,timeout = timeout,encoding='utf-8')
ssh.logfile_read = sys.stdout # 返回执行过程中的内容
i = ssh.expect('Password:')
if i==0:
    ssh.sendline(rsync密码)
    ssh.read()
    ssh.close()
© Licensed under CC BY-NC-SA 4.0

控制风险的最好办法是深入思考, 而不是投资组合。——巴菲特

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!