繁体   English   中英

为需要密码并输入密码的 Windows 编写 ActiveState Tcl 程序

[英]Write ActiveState Tcl Program for Windows that expects a password and enters it

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

#!/bin/sh
# \
exec tclsh "$0" ${1+"$@"}
package require Expect

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

sampleScript.sh 代码:

echo 'Hello, world.' >foo.txt

我的程序输出如下:

'The operation completed successfully. while executing "spawn sampleScript.sh" 
(file "compare.tcl" line 6)'

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

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

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

    expect eof
  • 否则,使用

    interact

阅读如何创建最小的、可重现的示例——您更新的代码不会重现您看到的错误

  • 代码:
    1. 当你发送东西时,你通常需要“回车”: send "password\\r"
    2. 您是否在 Tcl 脚本中添加了expect eof 如果没有,您可能会在它有机会创建输出文件之前杀死 sampleScript.sh
  • sampleScript.sh:这真的是你的示例脚本吗? 密码提示在哪里?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM