Как я могу захватить вывод удаленных команд, а затем выпустить больше удаленных команд?
-
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 г.)