просто для взлома, я пытался посмотреть, смогу ли я запустить удаленную команду s sh, получить ее вывод, локально отреагировать на нее и отправить команды обратно на удаленный
Я просто не могу обернуть голову, почему это не работает со следующим:
rm foobar; mkfifo foobar; ( echo echo ok ; while true; do cat foobar; done) | ssh host | awk '{if ($1 == "ok"){ print "touch makeasideeffectasproof"}else{ print "echo just something else"}}' > foobar
однако это, похоже, не работает; Тем не менее, если я выполню
rm foobar; mkfifo foobar; ( echo echo ok ; while true; do cat foobar; done) | ssh host | awk '{if ($1 == "ok"){ print "touch makeasideeffectasproof"}else{ print "echo just something else"}}'
echo just something else
echo just something else
touch makeasideeffectasproof
Кажется, это работает до сих пор, но обратная связь l oop не завершена, даже не записывая в foobar.
даже простой cat
в кажется, что конец канала блокирует все
rm foobar; mkfifo foobar; ( echo echo ok ; while true; do cat foobar; done) | ssh host | awk '{if ($1 == "ok"){ print "touch makeasideeffectasproof"}else{ print "echo just something else"}}' | cat # blocks
Зачем блокировать первый и третий команды?