Назад | Перейти на главную страницу

прозрачные сигналы по ssh

Под прозрачностью я подразумеваю пересылку:

В качестве примера рассмотрим эти вызовы (бессмысленной) локальной и удаленной команды:

$ `cat - > /dev/null; sleep 10` < /local/file
$ ssh user@host "cat - > /dev/null; sleep 10" < /local/file

Я могу прервать первую ^C просто хорошо. Но если я попробую это во время второго, это повлияет только на ssh, оставив команду запущенной на удаленном сервере, если cat уже закончено.

Я знаю о запуске sshс участием -t, но таким образом я не могу отправлять данные через stdin. Возможно ли это с ssh одинок вообще?

Сигналы - это область локального ядра; они никогда не передаются по сети.

Хотя вы можете запускать команды в удаленном сеансе ssh с локального компьютера, это не делает волшебным образом события системного уровня на удаленном компьютере доступными локально.

Вам придется обернуть все это в сценарий, который улавливает все (возможные) сигналы и передает их обратно через соединение ssh, но даже тогда они не станут снова волшебными сигналами.

Возможно, что-то вовлекающее nc больше подходит для перетасовки std {in | out | err}; это тоже не входит в набор инструментов ssh.