我在pxssh
中使用Python3.6
来通过脚本来玩SSH。
一切正常,但我只有一个小问题。
我登录SSH的机器上的提示根据我发送的一些命令而改变(不是全部!)
这是我的脚本代码
from pexpect import pxssh
from codecs import encode
ip = xxx.xxx.xxx.xxx
username = 'user'
password = 'pass'
prompt = 'Something # '
s = pxssh.pxssh()
def send_cmd(s, cmd):
"A simple generic function to send a command via SSH and printing it's result"
s.sendline(cmd)
s.prompt(timeout=1)
print('*'*20)
print((s.before).decode("utf-8"))
return
if not s.login (ip, username, password, auto_prompt_reset=False):
print('SSH session failed on login')
print(str(s))
else:
print('SSH session login successful')
s.PROMPT = prompt
send_cmd(s, 'commands')
send_cmd(s, 'end')
s.logout()
print('Logged out of SSH session')
以下是一些提示示例:
Something #
Something (toto) #
Something (tata) #
Something (...) #
所以我想知道是否有可能做一个正则表达式来匹配这个,所以当我打电话给s.before
时,我不会得到提示。
我知道在Ruby中我可以做这样的事情
(Something \(.+\)# )
Python和/或pxssh支持这个吗?
答案 0 :(得分:0)
好吧看起来很简单:
prompt = r'(Something .+ # )'
而不是:
prompt = 'Something # '
就够了。
应该早点尝试过.. :)