使用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,也是可以實現的。後續再鑽研。