Итак, я почесал голову, пытаясь понять это, и я немного застрял.
Я использую модуль подпроцесса Python и Popen, чтобы открыть сеанс PuTTY (используя plink.exe) и подключиться к удаленному хосту. Это означает, что у меня есть доступ к выходным данным сеанса.
Я пытаюсь найти команду или написать сценарий, который я могу выполнить, который сообщит мне PID удаленного процесса sshd, обрабатывающего сеанс. Если бы был только один сеанс SSH, я мог бы использовать «ps -f | grep sshd», чтобы вывести список процессов sshd и найти PID из синтаксического анализа этой строки.
Проблема в том, что к этому хосту одновременно подключено несколько SSH, и, следовательно, запущено несколько экземпляров sshd. Кто-нибудь знает, как я могу определить процесс, выполняющий конкретный сеанс, запустив команду из того же сеанса?
Примечание. Следующий сценарий будет работать для OS X и многих форм Linux.
#!/bin/sh
TTY=$(tty)
TTYID=${TTY##*/}
ps -f | grep $TTYID
Это возвращает строку с правильным PID, которую затем можно проанализировать с помощью Python. К сожалению, я использую QNX, в котором поле TTY не реализовано в «ps», поэтому все в этом поле просто отображается как «?». Любые другие идеи?
Спасибо!