Получить PID удаленного сеанса SSH [QNX]?

Итак, я почесал голову, пытаясь понять это, и я немного застрял.

Я использую модуль подпроцесса 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», поэтому все в этом поле просто отображается как «?». Любые другие идеи?

Спасибо!


person static_void_meringue    schedule 03.08.2014    source источник


Ответы (1)


Полноформатная печать pid оболочки, которую вы используете, и печать третьего поля, которое является PPID (родительским pid).

ps --no-headers -fp $$ | awk '{print $3}'
person Sami Kerola    schedule 03.08.2014
comment
Это сработало! Я не знал, что $$ можно использовать для получения PID таким образом. Спасибо! - person static_void_meringue; 04.08.2014
comment
@static_void_meringue, @Sami Kerola, я обнаружил, что есть решение попроще: ps --no-headers -eo ppid -fp $$ - person TooroSan; 30.12.2015