0
我想使用pxssh爲NetScaler(一種基於FreeBSD的產品)製作自動升級腳本。pxssh如何發送'N'以提示「[是/否]」
我在FreeBSD上成功上傳和tar固件並進行安裝。
隨着promop「你要立即啓用?[Y/N]」,我的腳本未能sendline「否」,它
錯誤代碼爲「‘海峽’對象不是可調用的」
下面是輸出:
You can also configure this feature anytime using the command line
interface or the configuration utility. Please see the documentation
for further details.
Do you want to enable it NOW? [Y/N]
'str' object is not callable
[[email protected] NS_Auto_Upgrade]#
下面是我的腳本
try:
ssh_command = pxssh.pxssh()
hostname = remotename
username = loginname
password = loginpassword
#ssh_command.PROMPT= '> | Do you want to enable it NOW? [Y/N]' #self-defined original prompt
ssh_command.PROMPT= '> ' #self-defined original prompt
#ssh_command.login(hostname, username, password,original_prompt='[#$>]')
ssh_command.login(hostname, username, password,auto_prompt_reset=False)
ssh_command.prompt()
print(ssh_command.before)
ssh_command.sendline('shell') # run a command
#print(ssh_command.before)
#ssh_command.PROMPT='Do you want to enable it NOW? [Y/N]' # match the prompt
print(f[0:-4])
ssh_command.prompt()
print(ssh_command.before)
ssh_command.sendline('mkdir /var/nsinstall/%s && ls -l /var/nsinstall' % f[0:-4])
ssh_command.prompt()
ssh_command.sendline('tar xzvf /var/nsinstall/%s -C /var/nsinstall/%s' % (f, f[0:-4]))
ssh_command.prompt()
print(ssh_command.before)
ssh_command.sendline('/var/nsinstall/%s/installns' % f[0:-4])
ssh_command.PROMPT='Do you want to enable it NOW? [Y/N]'
ssh_command.prompt()
print(ssh_command.before)
ssh_command.sendline('No')
ssh_command.PROMPT('Reboot NOW? [Y/N]')
ssh_command.prompt()
ssh_command.sendline('Yes')
#ssh_command.prompt()
print(ssh_command.before)
感謝您的回覆! 第一個提示是「你想啓用...」,我需要發送線「否」,然後進程繼續前進,第二個提示「現在重新啓動」,那時候,我需要輸入「是」 Hope它可以幫助你理解 –
是的,但是在一個地方,你正在做'PROMPT = ...',而在另一個地方你正在做'提示(...)'。第二個可能應該像第一個(儘管我想這可能是相反的,我根本不知道你的圖書館)。請注意,對於調試,刪除用於捕獲異常的'try' /'except'塊可能會很有用。讓程序崩潰可能會很有幫助,因爲它會向您顯示異常的追溯信息,以確切地標識它發生的位置。 – Blckknght
你的意思是說,如果我之前定義了PROMPT,那會持續到函數結束。 感謝您的建議,我會嘗試刪除try/except塊。我很困惑的是,pxssh可以期待這樣的提示「現在重啓[Y/N]」 –