1

Я пытаюсь проверить пароль пользователя с помощью команды входа в систему, как это:

# echo "name\npassword" | login  

но команда заканчивается, ничего не написав. echo заканчивается из-за SIGPIPE. Почему login остановился, прежде чем спрашивать имя и пароль?

Когда я делаю то же самое с командой passwd , она работает:

# echo "password\npassword" | passwd  
Enter new UNIX password: 
Retype new UNIX password:
passwd: password updated successfully 

У меня есть Ubuntu 12.04 и Bash 4.2.25

1 ответ1

9

Команда входа в систему считывает ввод с терминала, а не принимает его как ввод по каналу (STDIN).

Если вы хотите login скрипт входа в систему, вы можете использовать утилиту expect :

#!/usr/bin/expect

spawn "login"

expect "login:" { send "mtak\r" }
expect "Password:" { send "mypassword\r" }

interact

Вставьте это в файл, запустите chmod +x script.ex и запустите его с ./script.ex

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .