在 2019-05-27 11:19, Cameron Simpson 写道:

The output of "ssh-agent -s" is Bourne shell variable assignment syntax. You need to parse that and then install those values in so.environ before calling the second command. The subprocess module has methods for collecting the output of a command (see the communicate method).

Hi,
I want to rewrite the shell script to python script so I have had changed the "ssh-agent -s" to 'ssh-agent cmd' in python script for the consistence on windows. There are two inputs in the two commands. I tried code use communicate method and write method and got errors:
Cannot send input after starting communication
and
ValueError: write to closed file
  I found the communicate method just run one times.

The manual input process is as follows:
1. run cmd.exe
2. input 'ssh-agent cmd' press return, the window display a new prompt.
3. input 'ssh-add id_rsa' and press return, it will ask the id_rsa password. After input correctly password, it will display 'Identity added: id_rsa (id_rsa)' and a new prompt.

import subprocess

p = subprocess.Popen('cmd', stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True, universal_newlines = True)
outinfo, errinfo = p.communicate('ssh-agent cmd\n')
#p.stdin.write('ssh-add id_rsa\n')
#p.stdin.flush()
print('outinfo is \n %s' % stdoutinfo)
print('errinfo is \n %s' % stderrinfo)

After a lot of searching and learning I still do not know how to code it, I realy need help.

Thanks a lot.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to