Как я могу захватить вывод удаленных команд, а затем выпустить больше удаленных команд?

StackOverflow https://stackoverflow.com/questions/1198351

  •  20-09-2019
  •  | 
  •  

Вопрос

Я запускаю скрипт, в котором он входит в систему на сервере, а затем выполняет команду «Passwd -n 0 -x 99999 -i -1 отладка» для удаления старея пользователя отладки. Если отладка пользователя отсутствует, я хочу создать отладку пользователя, изменить его пароль, а затем выполнить вышеуказанную команду для старения.

Как я могу сделать?

С уважением, Васишта

Это было полезно?

Решение

Из perlfunc(1):

          system LIST
               [...]
               The return value is the exit status of the program as returned
               by the "wait" call.  To get the actual exit value, shift right
               by eight (see below).

Следовательно:

my $ret = system(qw/passwd -n 0 -x 99999 -i -1 debug/);
if ($ret != 0) {
  # failure handling code here
}

Другие советы

Использовать марионетка.

Если вы действительно настаиваете на том, чтобы делать это вручную, используйте getent passwd debug Чтобы проверить, существует ли пользователь:

if [ $(getent passwd debug | wc -l ) = 0 ]; then
    adduser debug
fi

Я предлагаю использовать что -то вроде Ожидать. Анкет Это обрабатывает интерактивность для вас. Вы можете войти на сервер, выполнить команды, проверять вывод, отправлять больше ввода и так далее. Если вы делаете много удаленного администрирования сервера, это очень удобный инструмент. Есть даже статья об этом в Перл обзор Выпуск 4.2 (весна 2008 г.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top