Могу ли я выводить локальную переменную через ssh в удаленный файл? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь записать переменную в конец файла, но записать его в STDOUT на локальном сервере некоторый код:

$num = <STDIN>
my $cmd = "echo $dep_keys{$num} >> /root/1";
#$ssh->system({stdin_data =>$dep_keys{$num} },"echo >> /root/1");
#$ssh->error die "Couldn't establish SSH connection: ". $ssh->error;
#$ssh->system("echo $dep_keys{$num} >> /root/1");
$ssh->system($cmd);

Я ожидаю, что файл будет содержать новую строку в конце файла.

1 Ответ

1 голос
/ 29 сентября 2019
use String::ShellQuote qw( shell_quote );

defined( my $num = <STDIN> )
   or die("Invalid input");

chomp($num);

defined($dep_keys{$num})
   or die("Invalid input");

my $cmd = shell_quote('printf', '%s\n', $dep_keys{$num}) . ' >>/root/1';
$ssh->system($cmd);

Исправления:

  • Проверяет EOF и другие недопустимые входы.
  • Удаляет перевод строки перевода из $num (если есть).
  • Правильно преобразуйте текст из элемента hash в литерал оболочки.
  • Избегает echo, поскольку echo делает невозможным вывод некоторых строк.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...