在我的计算机中,我有两个用户(tiger,jenk),
现在我想为用户“tiger”的登录用户“jenk”创建一个shell脚本,我尝试这个代码
[tiger@pagaltiger mytask]$ echo -e "IncorrectPassword\n" | su jenk
Password: su: Authentication failure
echo -e "CorrectPassword" | su jenk
[tiger@pagaltiger mytask]$
然后我再次以 Tiger 用户身份登录我出了什么问题
我不想使用期望
答案1
最好的方法是在系统上设置一个安全 shell 守护程序(如果尚未运行)并使用无密码密钥对身份验证。假设sshd
已经就位,您可以登录tiger
并运行以下命令:
ssh-keygen
ssh-copy-id jenk@localhost
之后,tiger
将能够jenk
使用以下语法运行命令:
ssh jenk@localhost '(some command here)'
例如:
tiger@hostname $ ssh jenk@localhost 'whoami'
jenk
tiger@hostname $
答案2
当你运行该命令时在管道中,它会生成一个新进程,而不是在当前 shell 中运行命令。新的 shell 切换到 user jenk
,但是当该 shell 退出时(因为它没有其他事情可做),生成该 shell 的原始 shell 仍然以您的身份登录。
如果您在脚本中运行该命令,它将在子 shell 中运行,无论它是否在管道中。
(我的建议是先输入密码su jenk
,然后输入密码;这样更简单。)