首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写自动化的交互式shell脚本?

如何编写自动化的交互式shell脚本?
EN

Stack Overflow用户
提问于 2013-07-09 19:03:44
回答 2查看 3.3K关注 0票数 0

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

代码语言:javascript
运行
复制
#!/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"

我得到了以下输出:

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2013-07-09 19:05:52

expect语法是

代码语言:javascript
运行
复制
expect -c 'spawn sudo git pull; expect assword; send "password\n"; interact'

其中spawn sudo git pull;是您的命令,expect assword;等待assword出现,当它出现时,expect发送password

票数 3
EN

Stack Overflow用户

发布于 2013-07-09 20:01:26

你有两个#!代码行,但您的脚本一次只能由这些程序中的一个运行。因为大多数命令都是Expect命令,所以删除#!/bin/bash行,这样脚本就可以由Expect运行。但是,ls -ltr行不是Expect命令,会导致错误,但您可以通过将其转换为puts [exec ls -ltr]来解决此问题。有关更多详细信息,请参阅the Expect manual page

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17546598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档