Python, Paramiko: Как да направя ssh -n user@host cmd с помощта на paramiko?

Опитвам се да изпълня команда дистанционно чрез SSH от Python и в този конкретен случай трябва stdin да бъде пренасочен към /dev/null.

Това е същото като използването на OpenSSH клиента с неговия флаг -n:

ssh -n user@host cmd

Как постигате това (-n) с Paramiko?

paramiko.SSHClient.exec_command() изглежда не позволява това, но може би пропускам нещо?


person herira    schedule 26.09.2011    source източник


Отговори (2)


Освен ако не разбирам въпроса ви неправилно: не е нужно да постигате това. Нищо не се чете автоматично от stdin/записва в stdin на отдалечения процес, освен ако вие самите изрично не го направите. Така че не е нужно да предотвратявате четенето от stdin?

РЕДАКТИРАНЕ: може да има проблем, ако отдалеченият процес очаква данни на stdin и продължава да ги чака? Опитайте да се обадите на shutdown_write() в канала:

stdin, stdout, stderr = client.exec_command(cmd)
stdin.channel.shutdown_write()
person Steven    schedule 26.09.2011
comment
Е, в този случай изглежда, че го правя. Опитвам се да изпълня някои команди на powershell на отдалечения хост и прекарах часове, опитвайки се да го накарам да работи с Paramiko. Най-накрая заключих, че за да работи това, трябва да направя ssh -n user@host cmd, докато ssh user@host cmd просто ще виси завинаги. Правенето му на ръка от командния ред с помощта на OpenSSH клиента потвърждава, че без флага -n отдалечената команда виси. - person herira; 26.09.2011
comment
Иска ми се да бях попитал преди часове. Благодаря ти, Стивън! :) - person herira; 26.09.2011

Бих се отказал от парамико и бих започнал да използвам тъкан. Това ще ви позволи да извършвате отдалечени разговори в системата. Той използва paramiko за ssh връзка и осигурява хубав чист интерфейс за правене на много повече.

Не съм сигурен защо трябва да пипвате stdin към /dev/null, но има настройки за потискане с fabric.

Късмет!

person myusuf3    schedule 26.09.2011
comment
Благодаря, ще разгледам това, когато времето позволи. В момента имам краен срок, в който се казва, че използвам решението на Stevens. :) - person herira; 26.09.2011