當前位置:首頁 » 編程語言 » python安裝pexpect

python安裝pexpect

發布時間: 2023-01-20 19:56:04

python , pexpect 遠程式控制制

既然bash提示"匹配錯誤,應該是命令行相關參數的quoting有問題,仔細檢查這兩行
>>> sql = "mysql -D logappconfig -e \\\"UPDATE app.Settings SET appAMPM='AM'\\\""
>>> ssh = pexpect.spawn('ssh %s@%s \"%s\"' % ('toor', ip, cmd))

我沒有運行環境,無法調試。只能告訴你應該是這里有問題。

Ⅱ 如何升級到python3版本並且安裝pip3及ipython3

如何升級到python3版本並且安裝pip3及ipython3
確保你的系統上已經安裝好了 pip3. 如果沒有,請使用命令:
sudo dnf install python3-pip
進行安裝。
安裝好了之後在命令行輸入pip3會顯示它的幫助信息。

開始安裝tornado。首先,按照常理,使用命令:
sudo pip3 install tornado==4.3
如果4.3已經不是最新版本,請自行替換為最新版本。
經過小編嘗試,發現容易出現 timeout 錯誤。

Ⅲ python 的pexpect模塊怎麼安裝

當然,ssh登錄還可以使用pexpect的run函數實現:
#events是一個字典,定義了expect和sendline的對應關系
pexpect.run('ssh [email protected]',events={'password:','123456'})

針對ssh遠程登錄,pexpect又派生出了pxssh類,在ssh會話操作上再做一層封裝
其常用方法是:
login() #建立ssh連接
logout() #斷開ssh連接
prompt() #等待系統提示符,用於等待命令執行結束

Ⅳ Python 在windows中如何安裝pexpect呢python使用什麼版本,pexpec

可以使用winpexpect

linux 安裝python拓展包pexpect

哦。因為你是egg格式。所以需要安裝一個setup tool,也有可能是ezsetup。這個在它的安裝里有一個詳細提示。

distuils.core是python的setup.py里引用的一個安裝包。通常python安裝分發包都要使用這個庫。

從現在這個情況看。你的機器上的python似乎不是一個完整版本。

我以前在suse的linux上發現過這種問題。

你可以單獨安裝一個自己的python版本。這樣linux原有的python與你安裝的python相互不影響都可以使用。

Ⅵ 怎樣用python實現scp

scp 功能很強大,但需要人工輸入 password, 當然可以通過把 公鑰保存在遠程主機的 ~/.ssh 目錄中,而後就不用輸入password,但這需要配置.

用 sshpass 可能在命令輸入 password, 但 需要用 「sudo apt-get install sshpass」 安裝
如果不想用上面兩種方法,可以用 expect 編寫腳本可以幫助我們自動交互

雖然 Python 也提供 pexpect 模塊,但既然 expect 很簡單,為何不直接用 os.system() 去執行呢?

下面是我編寫的類,實現了遠程復制

[html] view plain
class RemoteShell:

def __init__(self, host, user, pwd):
self.host = host
self.user = user
self.pwd = pwd

def put(self, local_path, remote_path):
scp_put = '''
spawn scp %s %s@%s:%s
expect "(yes/no)?" {
send "yes\r"
expect "password:"
send "%s\r"
} "password:" {send "%s\r"}
expect eof
exit'''
os.system("echo '%s' > scp_put.cmd" % (scp_put % (os.path.expanser(local_path), self.user, self.host, remote_path, self.pwd, self.pwd)))
os.system('expect scp_put.cmd')
os.system('rm scp_put.cmd')

但發現每次文件都沒有復制完,我想看expect 究竟做了什麼事情,還好 expect 提供 -d 參數給出更多的信息。
最後發現是被復制文件太大,expect 超時退出了

在腳本前加入 「set timeout -1" 就OK了

[html] view plain
scp_put = '''
set timeout -1
spawn scp %s %s@%s:%s
expect "(yes/no)?" {
send "yes\r"
expect "password:"
send "%s\r"
} "password:" {send "%s\r"}
expect eof
exit'''

Ⅶ pexpect 跨平台(WIN、LINUX)簡明教程

詳細的內容可以參考下面的參考文檔,下面的內容主要是為網路設備運維人員使用的pexpect 跨平台簡明教程。

Expect 程序主要用於人機對話的模擬,就是那種系統提問,人來回答 yes/no ,或者賬號登錄輸入用戶名和密碼等等的情況。
pexpect是 Don Libes 的 Expect 語言的一個 Python 實現,是一個用來啟動子程序,並使用正則表達式對程序輸出做出特定響應,以此實現與其自動交互的 Python 模塊。它可以用來實現與ssh, ftp, telnet等程序的自動交互。

send命令後執行結果內容保存在buffer中,這時child.expect('keyword')後,child.before即為「keyword」之前的字元串,child.after即為匹配的」keyword」字元串。
command的執行結果都保存在一個buffer中,每次執行expect時都從buffer中開始檢查匹配的pattern,如果找到了匹配的pattern,則所有在匹配處之前的內容都從buffer中清除。
(這邊沒有看明白也沒有關系,可以看後面的實踐篇例子)

通常維護人員有的偏向於用WIN系統,有的偏向於LINUX系統。所以前期團隊希望形成一個統一框架的時候就出現了一個難題。框架如何適用於不同的系統。
LInux系統pexpect包,win系統前期嘗試使用winpexpect,但是程序改動很大,並沒有調試成功。
如何在WIN系統使用python的pexpect包很難找到相關資料,某乎上都是類似的疑問沒有解答。
團隊成員增加後,終於有了新的思路 , 團結就是力量 。

通過這個模塊進行不同系統的適配。
將plink.exe裝在python的文件夾在python的安裝目錄下,win系統可以同樣使用pexpect模塊

參考信息1:Pexpect 官方文檔 New in version 4.0: Windows support。Pexpect can be used on Windows to wait for a pattern to be proced by a child process, using [ pexpect.popen_spawn.PopenSpawn ]
參考信息2:PuTTY是一個Telnet、SSH、rlogin、純TCP以及串列介面連接軟體。plink是可以獨立使用的exe實現形式,可以讓我們直接在命令行制定好命令,然後執行,完成後自動關閉session。ssh是一個安全通道協議。plink是這個通道協議的一個實現 [圖片上傳中...(-572001-1587612890428-0)]

從官方文檔來看,
sendline() 和 send() 唯一的區別就是在發送的字元串後面加上了回車換行符,這也使它們用在了不同的地方:
只需要發送字元就可以的話用send()
如果發送字元後還要回車的話,就用 sendline()
但是在調測過程中,WIN系統下命令輸入後,child.before始終得不到預想中的結果。
經過逐步排查,發現在WIN系統下只能使用send() ,如果使用sendline() ,第一次交互沒有問題,後續交互就開始問題。

WIN系統下child.before輸出為b'byte型,做判斷時要轉為str型。具體可以參考最後面一篇講編碼類型的文章,講的很詳細。

例子1

send Username後,child.before一直到'Tac_Userna',child.after為『me:』,child.buffer為空。

expect關鍵字assword:後,child.before回顯一直到keyword之前,child.after為keyword,child.buffer為空。

例子2

下發command命令,child.before維持原來的不變,expect到keyword以後,child.before變為下發command命令後的設備回顯。

參考文檔

官方文檔

探索Pexpect

Pexpect示例及使用Tips

Python Pexpect模塊講解

Pexpect模塊使用說明

windows下使用plink實現全自動登陸ssh

Python3_字元編碼

Ⅷ 如何Python3.4使用pexpect來實現SSH登陸

Pexpect 是 Don Libes 的 Expect 語言的一個 Python
實現,是一個用來啟動子程序,並使用正則表達式對程序輸出做出特定響應,以此實現與其自動交互的 Python 模塊。 Pexpect
的使用范圍很廣,可以用來實現與 ssh、ftp 、telnet
等程序的自動交互;可以用來自動復制軟體安裝包並在不同機器自動安裝;還可以用來實現軟體測試中與命令行交互的自動化。

在shell裡面用過pexpect的人,相信都會很熟悉這種工具,pexpect是expect的python的一個實現,利用python來操作某些互動式的自動化任務是非常方便的。

如何在linux下安裝?
1,使用wget https://pypi.python.org/pypi?:action=show_md5&digest= 下載
2,使用tar -zxvf pexpect-3.3.tar.gz解壓
3,使用python setup.py install進行安裝
ok,上面的步驟,執行完成之後,我們就可以來寫個demo測試一下了,另外注意兼容問題,散仙的python是3.4,所以要下載支持python3.4的pexpect,如果你的python版本是2.x那麼就要下載2.x的pexpect來使用。
下面是散仙模擬SSH登陸一台機器並列印磁碟情況,然後退出的例子:
#!/usr/local/python3.4/bin/python3.4
import pexpect
ip="192.168.46.22"
name="root"
pwd="abc"
#發送命令執行交互
child=pexpect.spawn('ssh %s@%s' % ("root",ip) )
#
child.expect ('password:')
child.sendline(pwd)
child.expect('$')
child.sendline('df -h')
#發送命令
child.sendline("exit")
child.interact()
#關閉pexpect
child.close()

執行結果如下:
Last login: Wed Oct 22 18:35:08 2014 from 192.168.46.31
exit[root@ganglia ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_ganglia-lv_root 30G 3.6G 25G 13% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 485M 32M 428M 7% /boot
[root@ganglia ~]# exit
logout
Connection to 192.168.46.22 closed.
[root@master 2012]#
本文只是一個簡單的例子,可能覺得沒有必要使用python來完成,但當系統管理規模一旦大起來的話,使用python來自動化管理是非常輕松的一件事。

Ⅸ python 腳本中pexpect模塊問題~

親不清楚你為什麼匹配兩次y/n

我給你個例子說明expect的用法
例如我ssh連接一台伺服器

連接之後會有提示,此時我們可以使用expect

ssh.expect('continueconnecting(yes/no)?')

之前的字元應該自動正則了
expect之後我們就可以根據提示輸入要輸入的信息
ssh.sendline('yes ')

哦shit我發現個問題你是不是應該試試crt.sendline('y ')

熱點內容
壓縮長抱枕 發布:2025-07-18 16:13:38 瀏覽:503
如何使用wifi熱點配置網路 發布:2025-07-18 16:06:25 瀏覽:969
android軟鍵盤數字 發布:2025-07-18 16:03:18 瀏覽:610
三菱plc編程軟體官網 發布:2025-07-18 15:59:59 瀏覽:437
gse源碼 發布:2025-07-18 15:58:15 瀏覽:626
編譯鏈c語言執行速度 發布:2025-07-18 15:52:51 瀏覽:555
在線編程課程 發布:2025-07-18 15:46:56 瀏覽:173
生兔子演算法循環 發布:2025-07-18 15:44:32 瀏覽:46
背包規劃演算法 發布:2025-07-18 15:44:27 瀏覽:109
微信安卓手機哪裡設置鈴聲 發布:2025-07-18 15:36:54 瀏覽:780