0

我只想编写一个shell脚本,用于在运行我的命令时自动提供用户名和密码提示,我尝试了这个,但它不起作用。请帮助我找到任何出路。

#!/bin/bash
#!/usr/bin/expect

ls -ltr

spawn sudo git pull

expect "[sudo] password for sandeep:"

send "sandeep123\n"

expect "Username :"

send "sandeep\n"

expect "Password :"

send "sandeep121\n"

我得到以下输出:

sandeep@K2-Sandeep-08:~$ ./checkout.sh 
total 64
./checkout.sh: line 8: spawn: command not found
couldn't read file "Username:": no such file or directory
./checkout.sh: line 16: send: command not found
couldn't read file "Password:": no such file or directory
./checkout.sh: line 20: send: command not found
4

2 回答 2

3

期望的语法是

expect -c 'spawn sudo git pull; expect assword; send "password\n"; interact'

spawn sudo git pull;您的命令在哪里,expect assword;等待assword出现以及何时expect发送password

于 2013-07-09T11:05:52.170 回答
1

你有两个#!行,但您的脚本一次只能由这些程序之一运行。由于您的大多数命令都是 Expect 命令,因此请删除该#!/bin/bash行以便脚本由 Expect 运行。但是,该行ls -ltr不是 Expect 命令,会导致错误,但您可以通过将其转换为puts [exec ls -ltr]. 有关更多详细信息,请参阅Expect 手册页

于 2013-07-09T12:01:25.947 回答