Я использую Paramiko для tail -f
файла на удаленном сервере.
Раньше мы запускали это через ssh -t
, но это оказалось ненадежным, и -t
вызывал проблемы с нашей системой удаленного планирования.
У меня вопрос, как убить tail, когда скрипт улавливает SIGINT?
Мой скрипт (на основе Длительные команды ssh в модуле python paramiko (и как их завершить) )
#!/usr/bin/env python2
import paramiko
import select
client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect('someserver', username='victorhooi', password='blahblah')
transport = client.get_transport()
channel = transport.open_session()
channel.exec_command("tail -f /home/victorhooi/macbeth.txt")
while True:
try:
rl, wl, xl = select.select([channel],[],[],0.0)
if len(rl) > 0:
# Must be stdout
print channel.recv(1024)
except KeyboardInterrupt:
print("Caught control-C")
client.close()
channel.close()
exit(0)
Сценарий успешно ловит мой Ctrl-C и завершается. Однако он оставляет процесс tail -f
запущенным в удаленной системе.
Ни client.close (), ни channel.close (), похоже, не прерывают его.
Какую команду я могу ввести в блоке except, чтобы его убить?
На удаленном сервере работает Solaris 10.