當前位置:首頁 » 編程語言 » python遠程執行命令

python遠程執行命令

發布時間: 2023-05-14 20:46:13

『壹』 pythonftp連接遠程執行cmd

pythonftp連接遠程執行cmd操作方法如下:
1、pipinstallpywinrm安裝模塊即可。
2、windows系統伺服器需要開啟winrm服務。
3、cmd命令可以寫成一個.bat文件,在伺服器上直接執行即可。

『貳』 通過python腳本實現ansible遠程命令

import paramiko

import getpass

import sys

import threading

import os

def rcmd(host, port=22, user='root', passwd=None, cmd=None):

    ssh = paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ssh.connect(host, port=port, username=user, password=passwd)

    stdin, stdout, stderr = ssh.exec_command(cmd)

    out = stdout.read()

    err = stderr.read()

    if out:

        print(f'[{host}] \033[32;1mOUT\033[0m:\n{out.decode()}')

    if err:

        print(f'[{host}] \033[31;1mERROR\033[0m:\n{err.decode()}')

if __name__ == '__main__':

    # rcmd('127.0.0.1', passwd='redhat', cmd='id root; id zhangsan')

    if len(sys.argv) < 3:  # 命令加參數長度不能小於3

       塌悔 print(f'團罩正Usage: {sys.argv[0]} ipfile commands')

 悶陪       exit(1)

    if not os.path.isfile(sys.argv[1]):  # ip地址文件必須存在

        print(f'No such file: {sys.argv[1]}')

        exit(2)

    ipfile = sys.argv[1]

    cmd = ' '.join(sys.argv[2:])  # 拼接出命令

    passwd = getpass.getpass()

    with open(ipfile) as fobj:

        for line in fobj:

            ip = line.strip()  # 去除行尾的的\n

            t = threading.Thread(target=rcmd, args=(ip, 22, 'root', passwd, cmd))

            t.start()

『叄』 Python中執行系統命令常見的幾種方法

作為膠水語言,Python可以很方便地執行系統命令,從而幫助我們快速的完成任務;而且Python執行系統命令可採用的方法有很多,本文重點介紹一下:os.system()、os.popen()和subprocess模塊。
1. os.system()
這個方法直接調用標准C的system()函數,僅僅在一個子終端運行系統命令,而不能獲取執行返回的信息。
>>> import os
>>> output = os.system('cat /proc/cpuinfo')
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>> output # doesn't capture output
0
2. os.popen()
這個方法執行命令並返回執行後的信息對象,是通過一個管道文件將結果返回。
>>> output = os.popen('cat /proc/cpuinfo')
>>> output
>>> print output.read()
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>>
3. subprocess模塊
該模塊是一個功能強大的子進程管理模塊,是替換os.system, os.spawn*等方法的一個模塊。
>>> import subprocess
>>> subprocess.Popen(["ls", "-l"]) # python2.x doesn't capture
output
>>> subprocess.run(["ls", "-l"]) # python3.x doesn't capture
output
>>> total 68
drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents
drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads
... ...
>>>

『肆』 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寫個web界面簡單執行遠程linux命令 web界面要能自由填寫執行shell命令和腳本

首先python基察簡禪礎你得會:
最簡單套路:web用flask,linux交互用subprocessor模塊
說白了就三點:python基礎、flask框咐州架、敗塵subprocessor模塊

『陸』 如何使用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 模擬 ssh 執行遠程命令

日常開發連接 Linux 伺服器,都會用到 ssh 客戶端的軟體
其實 python 有一個模塊,可以簡單模擬一個 ssh 客戶端/服務端
編寫一些自動化的的任務時,會經常和它打交道
簡單記錄一下 paramiko 的基本使用

paramiko 不是標准庫,需要自行安裝
要腔粗求 py2.7,3.4 版本以上 [1]

在得到一個 ssh_client 客戶端連接對象後

第一次和伺服器建立連接,需要選擇是否自動將伺服器的 host_key 公鑰,記錄在本地

因為,在計算機的世界裡,沒有永久的朋友-- IP 短時間里不會刷新,但是山頌系統可能隨時被重置

否則會報錯提示:

可以加入 logging 模塊,查看詳細的通訊過程

使用三個變數,獲取返回的信息對象

讀取命令的執行結伍唯鎮果

『捌』 linux環境下,用python腳本遠程登錄到其他機器執行命令,如果將命令執行的結果返回到當前的機器

result=os.popen("襪陵含汪稿ssh A; grep -r hello ./* "告笑)
print("".join(result))

『玖』 如何在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 實現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伺服器並讓其開機自動執行。

熱點內容
在QQ音樂上傳 發布:2025-07-17 08:06:03 瀏覽:155
資料庫關閉連接 發布:2025-07-17 08:05:10 瀏覽:189
航海王之熱血航線戰斗員索隆怎麼配置 發布:2025-07-17 07:58:16 瀏覽:969
西安的java培訓機構 發布:2025-07-17 07:54:48 瀏覽:786
魅族存儲盤 發布:2025-07-17 07:36:39 瀏覽:729
編譯和運行java的命令 發布:2025-07-17 07:32:54 瀏覽:609
全軍出擊文件夾 發布:2025-07-17 07:28:33 瀏覽:554
安全解壓縮 發布:2025-07-17 07:13:44 瀏覽:19
腳本格式器 發布:2025-07-17 07:13:43 瀏覽:926
用蘋果機和安卓機哪個劃算 發布:2025-07-17 07:02:22 瀏覽:878