首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写需要输入密码的Windows程序ActiveState

编写需要输入密码的Windows程序ActiveState
EN

Stack Overflow用户
提问于 2020-10-12 23:41:03
回答 1查看 51关注 0票数 0

我想在windows中编写一个shell程序,它运行另一个shell脚本,并期望从Git bash终端输入密码提示。这就是我到目前为止所知道的:

代码语言:javascript
复制
#!/bin/sh
# \
exec tclsh "$0" ${1+"$@"}
package require Expect

spawn sampleScript.sh
expect "Password:"
send "pass123"

sampleScript.sh代码:

代码语言:javascript
复制
echo 'Hello, world.' >foo.txt

我的程序输出以下内容:

代码语言:javascript
复制
'The operation completed successfully. while executing "spawn sampleScript.sh" 
(file "compare.tcl" line 6)'

但是,在我的脚本所在的本地文件夹中没有创建foo.txt。你能帮上忙吗?

EN

回答 1

Stack Overflow用户

发布于 2020-10-13 23:27:53

expect程序的关键是让衍生的程序优雅地退出。按照目前的情况,在expect脚本发送密码后,它会立即退出,这会过早地杀死生成的程序。

  • 如果您不需要与sampleScript交互(即,让它运行到完成),那么expect脚本中的最后一行应该是

expect eof

  • 否则,请使用

interact

读取How to create a Minimal, Reproducible Example --更新后的代码不会重现您看到的错误

  • Tcl代码:
    1. 当你发送一些东西时,你通常需要“回车”:send "password\r"
    2. Did你添加了expect eof到Tcl脚本?否则,您可能会在sampleScript.sh 有机会创建输出file

之前终止它

  • sampleScript.sh:这真的是你的样例脚本吗?密码提示符在哪里?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64320982

复制
相关文章

相似问题

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