0
원격 서버에 ssh하고 scp 또는 yum 등의 쉘 스크립트를 실행하고 싶습니다.paramiko SSHClient를 사용하여 지속적으로 출력하는 방법
모든 점은 scp 진행 또는 yum 다운로드 진행과 같이 지속적으로 sthout을 얻을 수 없다는 점을 제외하고는 모두 잘 진행되었습니다. f.read
이 차단되고 아무 것도 반환하지 않습니다.
paramiko는 가짜 stdout 스트림을 줄 단위로 전송할 수 있지만 이러한 프로 그래 시브 출력은 줄 구분 기호를 출력하지 않지만 '\ r'은 출력합니다.
어쨌든이 문제를 해결할 수 있습니까?
여기에 N 바이트가 읽은하거나 EOF를 얻을 때 ssh
이 paramiko.SSHClient()
def read_buffer_line(f):
line = ""
while not f.channel.exit_status_ready():
c = f.read(1)
if c == '\n':
yield line
line = ''
else:
line += c
yield line + f.read()
def ssh_run(ssh, cmd):
stdin, stdout, sterr = ssh.exec_command(cmd, get_pty=True, bufsize=1)
for l in read_buffer_line(stdout):
print l
그것을 작동합니다. 감사.. –