1、脚本使用
使用场景:使用jmeter做性能测试,需要传jmx脚本到服务器中,且做分布式压测,需要将脚本传到多台服务器中;且因为前期的调试和线程数的不断调整,上传的频率较高,为了提升性能测试效率,编写python脚本,本地执行可一次性将脚本上传至所有的压测服务器 脚本如下:
import paramiko
#创建ssh对象
ssh = paramiko.SSHClient()
#ssh.load_host_keys("C:/Users/Administrator/.ssh/known_hosts")
#允许连接不在know_hosts文件的主机上
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
filename = "genUid.jmx"
#本地文件路径
localpath = "/Users/xxx/demo/" + filename
#服务器的文件路径
remotepath = "/root/test/" + filename
#可设置多台服务器,尽量服务器的密码保持一致
server = "47.105.193.249,xx.xx.xxx.xxx,xx.xx.xxx.xxx"
words = server.split(",")
for word in words:
#连接服务器
ssh.connect(word, username="root", password="xxxxx")
sftp = ssh.open_sftp()
sftp.put(localpath, remotepath, callback = None)
#关闭连接
ssh.close()
2、paramiko模块
paramiko模块,基于SSH用于连接远程服务器并执行相关操作。
2.1、ssh的使用
import ssh
# New SSHClient
client = ssh.SSHClient()
# Default accept unknown keys
client.set_missing_host_key_policy(ssh.AutoAddPolicy())
# Connect
client.connect("xxx.coder4.com", port=22, username="xxxx", password="xxxx")
# Execute shell remotely
stdin, stdout, stderr = client.exec_command("ls -alh")
stdout.read()
2.2、sftp的使用
当拿到一个SSHClient后,我们除了执行命令,还可以开启一个sftp的session,用于传输文件、创建文件夹等
# Open sftp session
sftp = client.open_sftp()
# Make a dir
sftp.mkdir('abc')
# Down file from remote to local 这个可能会抛出异常,如果失败的话
sftp.get('firewall.sh', '/tmp/firewall.sh')
# Upload file from local to remote 也可能会抛出异常
sftp.put('/tmp/firewall.sh', 'firewall_new.sh')