import os
import paramiko
class sshconnectionutils:
__hostname = ''
__port = 22
__username = ''
__password = ''
__ssh = ''
def __init__(self, hostname, port, username, password):
self.__hostname = hostname
self.__port = port
self.__username = username
self.__password = password
# 連線
def connect(self):
print('ssh 連線中 %s@%s ....' % (self.__username, self.__hostname))
try:
self.__ssh = paramiko.sshclient()
self.__ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())
self.__ssh.connect(hostname=self.__hostname, username=self.__username, port=self.__port,
password=self.__password)
print('ssh連線 %s@%s 成功......' % (self.__username, self.__hostname))
except exception as e:
print('ssh連線失敗 %s@%s: %s' % (self.__username, self.__hostname, e))
self.exit()
# 執行命令
def exec_command(self, command):
print('命令為::', command)
stdin, stdout, stderr = self.__ssh.exec_command(command)
err_list = stderr.readlines()
if len(err_list) > 0:
print('ssh 執行命令 [%s] 錯誤: %s' % (command, err_list[0]))
print(stdout.read().decode('utf-8'))
# 檔案上傳
def upload(self, src, dst):
try:
sftp = self.__ssh.open_sftp()
except exception as e:
print('開啟sftp失敗:', e)
self.exit()
try:
print('上傳檔案: %s --> %s' % (src, dst))
sftp.put(src, dst)
sftp.close()
except exception as e:
print('上傳檔案失敗:', e)
self.exit()
# 關閉連線
def close(self):
self.__ssh.close()
# python程式終止
def exit(self):
os._exit(0)
測試(親測成功,複製可用)
from python.shell.ssh import sshconnectionutils
import requests
import time
ssh = sshconnectionutils("******x", "22", "root", "******x")
ssh.connect()
# 遠端關閉tomcat
print("關閉tomcat")
ssh.exec_command("/usr/local/tomcat8/bin/shutdown.sh")
time.sleep(1)
# 殺死程序
print('殺死程序')
ssh.exec_command('ps -ef | grep /usr/local/tomcat8 | awk \'\' | xargs kill -15')
time.sleep(1)
# 清空日誌
print("清空日誌")
ssh.exec_command("rm -rf /usr/local/tomcat8/logs/*")
time.sleep(1)
# 檔案上傳
print('上傳war')
ssh.upload("c:\\users\\lenovo\\desktop\\test.war", "/root/test.war")
# 遠端開啟tomcat
print("開啟tomcat")
ssh.exec_command("/usr/local/tomcat8/bin/startup.sh")
time.sleep(1)
# # 關閉ssh連線
ssh.close()
time.sleep(1)
# 檢測是否成功
print("測試http://******")
python ssh工具paramiko的一點修改
經常使用paramiko工具對幾百台裝置進行管理。主要是每天到上邊取檔案過來,作為備份。今天發現程式執行了10個小時還沒有結束,就上去看乙個究竟。檢視日誌,發現在取一台伺服器上的檔案時卡在那裡了。自己手動ssh登入上去,執行了乙個ls命令就卡住了,原來是這個伺服器的硬碟出問題了。怪不得取不到檔案。但...
python ssh連線mysql資料庫
很久很久沒寫部落格了,自從跳槽之後就特別忙,也就是那種真正的996工作,今天有個同事問我ssh連線到資料庫要我幫忙,他說問了很多人都不會,然後確實我覺得可以分享一下,因為ssh連線資料庫安全效能會更高。不多bb了,進入正題。首先通過ssh方式連線mysql需要匯入乙個sshtunnelforward...
判斷網路是否連線工具類
created by a on 2014 5 18.和網路相關的工具類 isconnected context context 判斷網路是否連線 iswifi context context 判斷是否是wifi連線 opensetting activity activity 開啟網路設定介面 aut...