我正在编写一个shell脚本,使用shell脚本本身提到的密码登录任何用户帐户。我的shell脚本如下:
mypass="helloworld"
echo mypass>su myaccount
执行此shell脚本后,我仍在我当前的用户帐户而不是myaccount
TL; DR我想知道如何通过运行它来通过shell脚本登录用户帐户。
答案 0 :(得分:3)
使用expect脚本可以通过脚本发送密码,下面是登录su帐户和执行pwd命令的最基本的期望脚本。
#!/usr/bin/expect
spawn su myaccount # Spawning the su process
expect "Password:*" # Wait/expect for the Password string from the spawned process
send "uraccpassword\r" # send the password to spawned process as an input.
expect "*bash*"
send "pwd\r"
expect "*bash*"
答案 1 :(得分:0)
如果您想在不提供密码的情况下登录帐户,则需要使用ssh-keygen
从您的帐户生成ssh密钥,并将公钥复制到您要登录的帐户中。另外,我总是会在生成的密钥上设置密码,然后使用ssh-agent
进行管理。