Задача:
выполнить при дабл-клике по ярлыку подключение к ssh-серверу (при условии наличия беспарольного ключа) с пробросом порта с сервера на клиентскую машину с гарантией того, что порт пробросился.
Откуда сложности:
plink (консольный интерфейс putty) под офтопиком не ругается, если порт на сервере, который ему сказали пробросить, уже занят.
Данность:
Есть машина с линуксом, есть машина с офтопиком. На офтопике делаем
plink -R 55555:localhost:3389
(plink - консольная утиль из пакета putty, вместо терминального порта потом будет другой порт). После этого я хочу проверить наличие слушающего сокета на порту 55555 на сервере, к которому я подключился по ssh, и убедиться, что этот сокет слушается тем же процессом, который запустил мне bash при подключении (так как если это не так, значит, порт 55555 уже занят другой сессией, возможно, с другой машины). PID этого процеса я узнаю, выполняя
PID процесса, навесившего сокет, я хочу узнать, выполнив
netstat -tlnp4 | grep 55555 | sed что-то-там
Дальше есть тонкость:
при отображении списка сокетов показывает PID приложения только для тех сокетов, которые открыты от имени моего аккаунта, а sshd со слушающим на 55555 порту сокетом почему-то оказывается не моим (а принадлежит пользователю с UID=6 - на моей машине это пользователь man, и я совершенно не понял, причем он тут). А раз хозяин сокета не я, то PID открывшего его приложения мне не показывают, и мой алгоритм не работает.
Вопросы:
1. Можно ли все-таки решить задачу моим алгоритмом, если да, как обойти грабли?
2. Как ещё можно решить эту задачу?
Спасибо.