expect 的 'spawn' 命令是否安全传递参数?

Does the expect's 'spawn' command passes the parameters securely?

我有以下 expect 脚本,它执行 'myexe' 并传递一些密码作为参数:

#!/usr/bin/expect
gets stdin pwd

log_user 0

eval spawn "/myexe ${pwd}"

log_user 1
expect eof
catch wait result
exit [lindex $result 3]

我的可执行文件 'myexe' 是编译的 Linux 可执行文件(不是 shell 脚本),目标是安全地向其传递密码。不幸的是,可执行文件不会读取密码的标准输入,而是将其作为启动参数。

当我执行以下 expect 脚本时,我看不到我的 'myexe' 可执行文件和 'ps'。有人知道 expect 执行的 'spawn' 是否足够安全吗?密码在其他地方是否可见(例如 /proc)?

不要在这里使用 eval。根据密码的内容,这可能是灾难性的。这应该足够了:

spawn /myexe $pwd

在 myexe 运行 时执行 ps -ef 的任何人都可以看到密码。