python SSH連線工具類

2021-08-26 08:15:19 字數 2917 閱讀 8115

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...