Bash 使用expect for密码不起作用,未输入任何内容
我尝试使用expect在脚本中输入值,其中一些值是密码 Expect没有输入密码,它笨拙地结束了它的子脚本,然后结束了它自己 我将其分解为简单性-尝试改变用户Bash 使用expect for密码不起作用,未输入任何内容,bash,shell,expect,heredoc,su,Bash,Shell,Expect,Heredoc,Su,我尝试使用expect在脚本中输入值,其中一些值是密码 Expect没有输入密码,它笨拙地结束了它的子脚本,然后结束了它自己 我将其分解为简单性-尝试改变用户 su - some_random_user ./suscript 其中suscript是: #!/bin/bash expect <<- DONE spawn su - root expect -ex {assword:} send -- "my_password\n" DONE #/bin/ba
su - some_random_user
./suscript
其中suscript是:
#!/bin/bash
expect <<- DONE
spawn su - root
expect -ex {assword:}
send -- "my_password\n"
DONE
#/bin/bash
expect脚本在子shell中运行,在子shell中登录,然后退出子shell。命令promt不会更改,或者您将看不到输入的任何密码。您期望的是什么?“我的\u密码\n”
应该是“我的\u密码\r”
要防止expect在键入密码后立即退出,请在发送密码后添加命令interact
。将root的密码存储在明文文件中是愚蠢的。你应该改为使用sudo
进行调查。我不担心这一点,我只是创建一个用户帐户来安装一个软件。Interact返回“spawn id exp0 not open”,但是我肯定是在生成一些东西脚本在子shell中运行,在子shell中登录,然后退出子shell。命令promt不会更改,或者您将看不到输入的任何密码。您期望的是什么?“我的\u密码\n”
应该是“我的\u密码\r”
要防止expect在键入密码后立即退出,请在发送密码后添加命令interact
。将root的密码存储在明文文件中是愚蠢的。你应该改为使用sudo
进行调查。我不担心这一点,我只是创建一个用户帐户来安装一个软件。Interact返回“spawn id exp0 not open”,但我肯定是在生成一些东西