如何解决如何使用 python 自动化“亵渎”CLI XMPP 客户端?
我希望使用 python 脚本通过 XMPP 自动发送文件。
xmpppy 和其他 xmpp 模块不支持发送文件,所以我决定尝试自动化 通过名为 Profanity 的 CLI 程序发送文件,因为交互式终端应用程序可以 使用 subprocess 和 pexpect 使用 python 自动化,但我似乎无法让它工作。
我试过了
p = pexpect.spawn("profanity",encoding='utf-8') #And also without the encoding flag
p.expect() #The previous command seems to instantly kill the spawned child so using expect is pointless
p.sendline() #This goes nowhere
print(p) 的输出是这个
<pexpect.pty_spawn.spawn object at 0x7ff355394f70>
command: /usr/bin/profanity
args: [b'/usr/bin/profanity']
buffer (last 100 chars): ''
after: None
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 9051
child_fd: 5
closed: False
timeout: 30
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
Process finished with exit code 0
用 pexpect 说脏话是不可能的吗? subprocess.Popen 也有类似的问题。
还有这个代码
p = pexpect.spawn('profanity')
if p.isalive():
print("Is alive")
else:
print("Is dead")
if p.isalive():
print("Is alive")
else:
print("Is dead")
退货
Is alive
Is dead
并且在 if else 块之间添加 expects 和 sendlines 没有任何改变
谢谢
编辑: 在 python shell 中运行这些命令按预期工作
>>>import pexpect
>>>p = pexpect.spawn('profanity')
>>>p.sendline('/connect')
>>>p.sendline('/msg xmpp@account.com')
>>>p.sendline('Hello')
我收到消息就好了。但是,当作为 python 脚本运行时,这不起作用。由于可能的连接时间,我在命令之间等了几秒钟。
编辑2: 我决定尝试这个,它似乎运行并保持 python shell 处于活动状态,但没有越过“/msg 帐户”部分。
p = pexpect.spawn('python3',encoding='utf-8')
p.expect_exact(">>>")
p.sendline('import pexpect')
p.expect_exact(">>>")
p.sendline("p = pexpect.spawn('profanity -a account')")
sleep(10)
p.expect_exact(">>>")
p.sendline("p.sendline('/msg xmpp@account.com')")
sleep(5)
p.expect_exact(">>>")
p.sendline("p.sendline('Ello')")
print(p)
返回似乎表明它在“/msg”失败,但我不知道。不过 22 是正确的答案。
<pexpect.pty_spawn.spawn object at 0x7f022ee18f70>
command: /usr/bin/python3
args: [b'/usr/bin/python3']
buffer (last 100 chars): ' '
before (last 100 chars): " p.sendline('/msg xmpp@account.com')\r\n22\r\n"
after: '>>>'
match: '>>>'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。