Подделайте терминал и введите необходимые данные. Сначала запустим нашу тестовую программу testproggie
на удаленной системе
#!/usr/bin/env perl
use 5.14.0;
use warnings;
say "one thing";
open my $fh, '<', '/dev/tty' or die "nope on /dev/tty: $!\n";
readline $fh;
say "another thing";
Который действительно потерпит неудачу, если вы перенесете на него новую строку
$ printf "\n" | ssh test.example.edu./testproggie
one thing
nope on /dev/tty: No such device or address
$
Итак, теперь мы подделываем терминал с remotenl
в локальной системе
#!/usr/bin/env expect
#set timeout 999
#match_max 99999
# this assumes the remote side does not do anything silly with
# the shell; if it does you may need to spawn a remote shell
# and then {send "./testproggie\r"} to that and then...
spawn -noecho ssh -q -t test.example.edu./testproggie
# this can be improved if you know what the line before the
# wait-for-the-return-key will contain
expect -re.
send "\r"
expect eof
# this could be simplified with better expect calls, above
regexp {([^\r\n]+)\r\n$} $expect_out(buffer) unused lastline
puts ">>>$lastline<<<"
и запустите его
$./remotenl
one thing
another thing
>>>another thing<<<
$
Предупреждение XAUTHORITY
, вероятно, не имеет прямого отношения к разрешениям. Это связано с тем, что первая часть вашего пути $XAUTHORITY
является символической ссылкой. Его можно смело игнорировать.
Отсутствие доступа к вашему текущему рабочему каталогу может быть связано с тем, как установлен VS Code, его (E )UID/(E )GID. Возможно, у вас установлена оснастка VS Code от имени пользователя root. Если ваш CWD находится на общем ресурсе NFS,проверьте, не сдавливает ли он корень. Проверьте права доступа к текущему рабочему каталогу, а также к вашему /snap/bin/code
.