파이썬을 통해 원격 시스템을 재부팅합니다. 재부팅이므로 현재의 ssh 세션이 종료됩니다. 요청이 리턴되지 않습니다. 나는 그 귀환에 관심이 없다.원격 명령이 파이썬을 반환하지 않습니다.
os.command ('sshpass -p 암호 ssh를 사용자 @ 호스트 재부팅')
코드는 재부팅을 수행 그러나 현재 세션이 사망하고 스크립트가 반환되지 않습니다.
나는 비동기를 수행 할 수 있으며 스레드, 다른 쉬운 옵션을 무시할 수 있습니까?
파이썬을 통해 원격 시스템을 재부팅합니다. 재부팅이므로 현재의 ssh 세션이 종료됩니다. 요청이 리턴되지 않습니다. 나는 그 귀환에 관심이 없다.원격 명령이 파이썬을 반환하지 않습니다.
os.command ('sshpass -p 암호 ssh를 사용자 @ 호스트 재부팅')
코드는 재부팅을 수행 그러나 현재 세션이 사망하고 스크립트가 반환되지 않습니다.
나는 비동기를 수행 할 수 있으며 스레드, 다른 쉬운 옵션을 무시할 수 있습니까?
스크립트가 반환되지 않습니다. 재부팅하기 전에 원격으로 연결을 재설정해야합니다. 당신은 프로세스를 실행할 수 asyc, 하나의 문제는 그들의 부모에 의해 정리되지 않은 subprocess가 좀비 (여전히 프로세스 테이블에서 공간을 차지함)입니다. 타이머를 추가하여 스크립트에서 더러운 작업을 수행 한 다음 백그라운드에서 정리할 수 있습니다.
이 명령을 매개 변수 목록으로 전환하고 설정 shell=True
을 건너 뛰었습니다. 중간 셸 프로세스가 실행되지 않는다는 것을 의미합니다.
import sys
import subprocess as subp
import threading
import timing
def kill_process(proc):
# kill process if alive
if proc.poll() is None:
proc.kill()
time.sleep(.1)
if proc.poll() is None:
sys.stderr.write("Proc won't die\n")
return
# clean up dead process
proc.wait()
proc = subp.Popen(['sshpass', '-p', password, 'ssh', '[email protected]', 'reboot')
threading.Timer(5, kill_process, args=(proc,))
# continue on your busy day...
Afaik에는 'os.command'가 없습니다. 당신은 실제로'os.system'을 사용하고 있습니까? 대신에'subprocess.check_call'을 시도해 보셨습니까? – Evert
당신은 무슨 일이 일어날 것으로 기대 하는가에 대해 자세히 설명해 주시겠습니까? "요청이 반환되지 않았습니다"라는 의미는 무엇입니까? – Tolli