自动化重启JMeter Server

使用paramiko类

import paramiko

try:
   s = paramiko.SSHClient()
   s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
   s.connect(hostname=server, username='root', password=password)
   # 1. 查看JMeter进程
   stdin, stdout, stderr = s.exec_command('cd /home/jmeter; ps -ef | grep jmeter; pwd')
   print(stdout.read())
   # 2. 杀掉JMeter进程
   stdin, stdout, stderr = s.exec_command("cd /home/jmeter; ps -ef | grep java | awk '{print $2}' | xargs kill -9; pwd")
   print(stdout.read())
   # 3. 查看JMeter进程
   stdin, stdout, stderr = s.exec_command('cd /home/jmeter; ps -ef | grep jmeter; pwd')
   print(stdout.read())
   # 4. 重新启动JMeter
   stdin, stdout, stderr = s.exec_command('cd /home/jmeter; nohup /usr/jmeter/apache-jmeter-4.0/bin/jmeter-server >nohup.out 2>&1 &')
   print(stderr.read())
   # 5. 查看JMeter进程
   stdin, stdout, stderr = s.exec_command('cd /home/jmeter; ps -ef | grep jmeter; pwd')
   print(stdout.read())
   s.close()
except Exception as e:
   print(e)

可以直接执行2和4

 

Ques1: 代码实现重启server,nohup jmeter-server & 无效

https://blog.csdn.net/weixin_30865427/article/details/94844952

1.路径问题,用脚本执行找不到jmeter-server

nohup /usr/jmeter/apache-jmeter-4.0/bin/jmeter-server &

另外修改为

nohup /usr/jmeter/apache-jmeter-4.0/bin/jmeter-server >nohup.out 2>&1 &

对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。

最后的一个&表示挂在后台执行,即后台

输出日志到nohup.out

Ques2: paramiko每次执行都会回到root路径

stdin, stdout, stderr = s.exec_command('cd /home/jmeter; nohup /usr/jmeter/apache-jmeter-4.0/bin/jmeter-server >nohup.out 2>&1 &')

笨方法:在每个命令前加上'cd /home/jmeter;'

利用别的类可以实现在一个路径下执行,但是想要paramiko,也是可以实现的。后续再钻研。

你可能感兴趣的:(JMeter,linux)