use*_*702 1 linux bash bash-scripting
我正在尝试通过这样的登录命令检查用户密码:
# echo "name\npassword" | login
Run Code Online (Sandbox Code Playgroud)
但命令结束时没有写任何东西。echo由于 SIGPIPE 而结束。为什么login在要求名称和密码之前停止?
当我对passwd命令执行相同操作时,它可以工作:
# echo "password\npassword" | passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Run Code Online (Sandbox Code Playgroud)
我有 Ubuntu 12.04 和 Bash 4.2.25
login 命令从终端读取输入,而不是通过管道 (STDIN) 接受它作为输入。
如果要编写脚本login,可以使用该expect实用程序:
#!/usr/bin/expect
spawn "login"
expect "login:" { send "mtak\r" }
expect "Password:" { send "mypassword\r" }
interact
Run Code Online (Sandbox Code Playgroud)
将此粘贴到文件中,运行chmod +x script.ex并运行它./script.ex
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |