Наверно не так выразился. При исполнении шелл становится самой программой, и нужно либо дожидатся пока исполнится до конца программа либо переподключаться для того чтобы продолжать работать в шелле. Можно юзать в конце &
, но все равно нужно в дальнейшем нажимать ентер. Так вот более точный вопрос. Как сделать чтобы программа исполнялась в фоне без всякого вывода?
Если коротко:
1) выкидываешь php_ssh
2) используешь exec для того, чтобы сделать spawn ssh на локальной системе
3) вписываешь в expect все нужные тебе события (обрати внимание что в примере останов тут закожен на eof)
4) парсишь выхлоп exec'а (т.е. выхлоп твоей программы), если оно тебе нужно.
У меня подобным способом (но на питоне) работал «первый в мире паразитический дистрибутив»: скрипты для plaintext-авторизации по ssh, простенький пакетный менеджер, собирающий в хомячке пользователя LFS, итп. Т.е. способ работает.