導航:首頁 > 程序命令 > python遠程執行命令

python遠程執行命令

發布時間:2022-11-17 03:13:03

python中執行系統命令常見的幾種方法

#我知道兩種(Windows系統)
#1:
os.system('commandline')#直接運行,運行成功返回0
#2:
p=os.popen('commandline')#打開一個線程運行命令,並可以像讀取文件一樣讀取返回信息
print(p.read())#讀取返回信息
p.close()#關閉

⑵ 【telnetlib】使用Python登錄Cisco交換機執行命令

更多內容請點擊 我的博客 查看,歡迎來訪。

telnetlib --- Telnet client

最近要對交換機埠進行控制,如果每次使用命令去操作確實挺麻煩的,就使用腳本一鍵實現,並有記錄日誌的功能。參考 https://blog.csdn.net/study_in/article/details/89338016

Telnet.read_until(expected, timeout=None) : #讀取連接伺服器後顯示的內容,直到遇到同 expected 相同的位元組串。或者等待時間大於 timeout 時直接向下運行。

Telnet.read_very_eager() : 讀取從上次IO阻斷到現在所有的內容,返回的是位元組串,需要進行 decode() 編碼。如果連接關閉或者沒有可用數據時會拋出 EOFError ,如果沒有其他可用的數據,返回的是 b"" ,除非在IAC中間,否則不會阻礙。

Telnet.open(host, port=23[, timeout]) : 連接到主機,埠號為第二個可選參數,默認為標準的Telnet埠(23),可選的 timeout 參數指定連接的超時時間,如果未指定,將使用全局默認超時設置。不要嘗試去重新打開一個已經連接的實例對象。

Telnet.close() : 關閉連接。

Telnet.write(buffer) : # 將一個位元組串(byte string)寫進socket,如果連接被阻塞,這也會被阻塞,如果連接關閉,會拋出 OSError 。

Telnet.interact() : telnet的交互功能,下面用了一個死循環保證用戶能夠一直輸入命令進行某些操作,也可以使用 Telnet.interact() 這個方法來使所連接終端持久化,不過官網說 (emulates a very mb Telnet client)直譯是一個非常愚蠢的客戶端。

使用python實現對交換機埠關閉、打開功能。

⑶ 如何使用python實現遠程登錄到linux再遠程登錄到另一個linux

這個是服務端限制啊,你即使是用python實現,也是走ssh通道啊,也還是要ssh驗證的,服務端限制,你還是沒辦法啊

如果你是嫌兩次登陸麻煩,那就在ssh驗證上做文章,實現免密碼驗證登陸

或者用A機器的ssh tunnel做代理

⑷ 如何使用python遠程登錄一個操作系統,並執行某條命令

你可以使用python的pexcpct包通過ssh調用遠程伺服器指令:
import pxssh
import getpass
try:
s = pxssh.pxssh()
hostname = raw_input('hostname: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login (hostname, username, password)
s.sendline ('uptime') # run a command
s.prompt() # match the prompt
print s.before # print everything before the propt.
s.sendline ('ls -l')
s.prompt()
print s.before
s.sendline ('df')
s.prompt()
print s.before
s.logout()
except pxssh.ExceptionPxssh, e:
print "pxssh failed on login."
print str(e)

⑸ 如何在Python中執行DOS命令

關於python調用cmd命令,主要介紹兩種方式:

一、Python的OS模塊

OS模塊調用CMD命令有兩種方式:os.system(),os.popen()。 都是用當前進程來調用。

1、os.system()

a、簡單粗暴的執行cmd指令

b、返回結果為0表示執行成功,無法獲取命令輸出的內容,本在cmd輸出的內容會直接在控制台輸出。

c、當命令運行結束後接著往下面執行程序(同步阻塞式)。用法如:os.system("ipconfig")。

2、os.popen()

a、能獲取DOS命令輸出的內容。

b、os.popen()返回的是一個file對象,那麼可以跟打開文件一樣操作,r是以讀的方式打開。

c、當命令運行結束後接著往下面執行程序(同步阻塞式)。

注意:os.popen() 方法用於從一個命令打開一個讀寫管道,在Unix,Windows中有效。

用法如:

with os.popen(r"adb devices","r")as f:

    text = f.read()

    print(text)# cmd輸出結果

二、管道subprocess模塊

a、在當前進程下產生子進程。

b、用wait()函數等待結果(非同步非阻塞式)。

【方法1】

result = subprocess.check_output(r'adb devices') ## 命令執行的輸出結果放到了result里

print(result)

【方法2】

process = subprocess.Popen(r'adb devices',shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

command_output = process.stdout.read().decode('gbk')

print(command_output)

Notices: 

有些命令行是非同步執行的不會馬上返回輸出,所以有時候我們要先等這個命令行執行完畢才能從stdout讀出來數據。這個時候要加上

process.wait()

我的GitHub

⑹ python pyqt5 如何把ssh遠程執行的linux命令結果輸出到控制項上(如textEdit)

textEdit控制項應該有個setText函數,可以使用它來顯示想要顯示的文本。

⑺ python udp可以遠程執行cmd命令嗎

1 import paramiko,os,sys
2
3 ip = raw_input("input ip address :>>>")
4 password = raw_input("input password:>>>")
5 cmd = raw_input("input your cmd:>>> ")
6
7 print '''
8 ------connecting to %s ,--------
9 '''%ip
10 def ssh_cmd(ip,port,cmd,user,passwd):
11 result = ""
12 try:
13 ssh = paramiko.SSHClient()
14 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
15 ssh.connect(ip,port,user,passwd)
16 stdin, stdout, stderr = ssh.exec_command(cmd)
17 result = stdout.read()
18 print result
19 ssh.close()
20 except:
21 print "ssh_cmd err."
22 return result

⑻ 怎麼用python登錄windows系統

# -*- coding:utf-8 -*-
#! python2
import wmi
def sys_version(ipaddress, user, password):
conn = wmi.WMI(computer=ipaddress, user=user, password=password)
for sys in conn.Win32_OperatingSystem():
print "Version:%s" % sys.Caption.encode("UTF8"),"Vernum:%s" % sys.BuildNumber #系統信息
print sys.OSArchitecture.encode("UTF8") # 系統的位數
print sys.NumberOfProcesses # 系統的進程數
if __name__ == '__main__':
sys_version(ipaddress="ip", user="用戶名", password="密碼")

⑼ python 實現ssh的執行遠端命令和scp的不同機器文件傳輸功能

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
def ssh_cmd(ip, passwd, cmd):
ret = -1
ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
try:
i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
if i == 0 :
ssh.sendline(passwd)
elif i == 1:
ssh.sendline('yes\n')
ssh.expect('password: ')
ssh.sendline(passwd)
ssh.sendline(cmd)
r = ssh.read()
print r
ret = 0
except pexpect.EOF:
print "EOF"
ssh.close()
ret = -1
except pexpect.TIMEOUT:
print "TIMEOUT"
ssh.close()
ret = -2
return ret

利用pexpect模塊我們可以做很多事情,由於他提供了自動交互功能,因此我們可以實現ftp,telnet,ssh,scp等的自動登錄,還是比較實用的。根據上面的代碼相信讀者已經知道怎麼實現了(python就是那麼簡單!)。

上面的代碼去完成任務還是比較費時間的,因為程序要等待自動交互出現,另外ubuntu用ssh連接就是比較慢,要進行一系列的驗證,這樣才體現出ssh
的安全。我們要提高效率,在最短的時間內完成。後來我發現了python裡面的paramiko模塊,用這個實現ssh登錄更加簡單。看下面的代碼:

復制代碼 代碼如下:

#-*- coding: utf-8 -*-
#!/usr/bin/python
import paramiko
import threading
def ssh2(ip,username,passwd,cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
for m in cmd:
stdin, stdout, stderr = ssh.exec_command(m)
# stdin.write("Y") #簡單交互,輸入 『Y'
out = stdout.readlines()
#屏幕輸出
for o in out:
print o,
print '%s\tOK\n'%(ip)
ssh.close()
except :
print '%s\tError\n'%(ip)
if __name__=='__main__':
cmd = ['cal','echo hello!']#你要執行的命令列表
username = "" #用戶名
passwd = "" #密碼
threads = [] #多線程
print "Begin......"
for i in range(1,254):
ip = '192.168.1.'+str(i)
a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
a.start()

上面的程序還是有些技巧的:
1.
利用多線程,同時發出登錄請求,同時去連接電腦,這樣速度快很多,我試了一下,如果不用多線程,直接一個一個挨著執行的話,大約5~10秒鍾才能對一台電
腦操作完,具體時間要根據命令的來決定,如果是軟體安裝或者卸載時間要更長一些。這樣下來怎麼也要一二十分鍾,用多線程後就快多了,所有的命令執行完用了
不到2分鍾!
2.最好用root用戶登錄,因為安裝或者卸載軟體的時候如果用普通用戶又會提示輸入密碼,這樣又多了一次交互,處理起來就比較麻
煩!安裝軟體時apt-get install xxx
最好加上「-y」參數,因為有時安裝或刪除軟體時提示是否繼續安裝或卸載,這又是一次自動交互!加上那個參數後就沒有人機交互了。
3. 循環時循環所有ip,因為計算機的ip是路由器自動分配的,保險起見,最好全部都執行,保證沒有遺漏的主機
4.遠端執行命令時如果有交互,可以這樣用 stdin.write("Y")來完成交互,「Y」就是輸入「Y」。
5.把所有的命令放到一個列表裡面,遍歷列表可以依次執行列表裡面的命令
6.為了更好的進行控制,最好在電腦上提前把root用戶打開,裝好ssh伺服器並讓其開機自動執行。

閱讀全文

與python遠程執行命令相關的資料

熱點內容
自動解壓失敗叫我聯系客服 瀏覽:482
易語言新手源碼 瀏覽:456
oa伺服器必須有固定ip地址 瀏覽:42
傳奇源碼分析是什麼 瀏覽:267
解放壓縮機支架 瀏覽:255
程序員禿頂搞笑相遇 瀏覽:6
IBM手機app商店叫什麼名字 瀏覽:834
jpeg壓縮質量 瀏覽:774
雲伺服器評測對比 瀏覽:145
java日期轉string 瀏覽:221
openfire源碼編譯 瀏覽:897
在線小工具箱引流網站源碼 瀏覽:337
非科班程序員自學 瀏覽:800
壓縮泡沫鞋底底材 瀏覽:219
程序員職場第一課2正確的溝通 瀏覽:679
遇到不合法app應該怎麼辦 瀏覽:91
匯編程序編譯後的文件 瀏覽:79
大智慧均線源碼 瀏覽:373
單片機排阻的作用 瀏覽:216
滴滴金融app被下架如何還款 瀏覽:212