我正在python中构建一个应用程序,以连接到分配给客户端系统的各种127.0.0地址,并使用该客户端的正确凭据。我遇到的问题是:#/ p>
ip = get_int('Which IP? 127.0.0.')
fullip = '127.0.0.{}'.format(ip)
print ('Connecting to {} on IP {}'.format(curr_client.client,fullip))
command1 = ['echo', curr_client.passwd]
command2 = ['/usr/bin/rdesktop',
'-g 1900x1000',
'-a 16',
'-u {}'.format(curr_client.user),
'-p -',
'-d {}'.format(curr_client.domain),
'-r disk:luke=/home/luke/Work\ Stuff',
'{}:9389'.format(fullip)]
print(' '.join(command1)+'\n'+' '.join(command2))
p1 = Popen(command1, stdout=PIPE)
Popen(command2,
stdout=DEVNULL,
stdin=p1.stdout,
stderr=None,
close_fds=True,
shell=False)
p1正确地回显了密码,我可以通过在两个命令之间推送一个打印(p1.communicate())来看到。
如果我取print(' '.join(command1)+'\n'+' '.join(command2))
的输出并将回显管道传入rdesktop调用,它就能正常工作。
但是,从此应用内部启动时无法登录。实际的命令运行(从ps中拉出)看起来像(用户/域编辑):
/usr/bin/rdesktop -g 1900x1000 -a 16 -u ****** -pXX -d ***** -r disk:luke=/home/luke/Work\ Stuff 127.0.0.13:9389
根据我在登录屏幕上看到的内容,它尝试使用XX作为密码。
我哪里错了?
答案 0 :(得分:1)
原来,popen正在做一些奇怪的间距。我取出了选项标识符和选项值之间的所有空格,现在它完美地工作了。
command2 = ['/usr/bin/rdesktop',
'-g1900x1000',
'-a16',
'-u{}'.format(curr_client.user),
'-p-',
'-d{}'.format(curr_client.domain),
'-rdisk:shared=/home/luke/Work\ Stuff',
'{}:9389'.format(fullip)]