gpt4 book ai didi

linux - 密码在纯文本文件中。如何在 linux 期望脚本中使用它们?

转载 作者:太空狗 更新时间:2023-10-29 11:22:20 26 4
gpt4 key购买 nike

我想使用 expect 脚本通过 ssh 连接到远程服务器。密码以纯文本形式存储。我想发送从文本文件读取的密码。它在所有其他情况下工作正常,除非密码包含 $ 等特殊字符。现在不能使用 ssh key 。因此,在发送到远程服务器之前如何使密码字符串可接受。它是在 expect 脚本中完成的。

最佳答案

要从存储在如下文件中的纯文本文件中读取值:

# Here is a commentPassword: hunter2# Here might be some other random stuff

Use something like this:

set f [open ~/securedDirectory/theFile.txt]
while {[gets $f line] >= 0} {
if {[regexp {^Password: (.*)$} $line -> password]} {
break
}
}
close $f

在最简单的情况下,您可以只执行 set password [gets $f] 但这需要密码是文件的第一整行。这通常是一个糟糕的配置文件!相反,在解析文本文件时,最好定义一个简单的格式并使用它。

然后您可以将密码用于:

send "$password\r"

在正确的位置。 除此之外您不需要任何额外的引用。


请注意,将密码存储在文件中本质上是不安全的。 (不像通过命令行参数或环境变量传递它们那么糟糕,但仍然不好。)确保采取措施尽可能保护文件及其包含的目录免受外部干扰(关闭其他用户的访问权限)等)将它们加密存储在一个文件中,脚本可以在需要时对其进行解密是一种选择,但并不像您想象的那么安全,因为您必须让代码在可以读取的地方进行解密。 (这可以通过让脚本本身只能由您读取来缓解,但是拥有一个保存密码的外部文件不再是一个大赢家。)

在实践中使用 SSH key 要好得多。

关于linux - 密码在纯文本文件中。如何在 linux 期望脚本中使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20943175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com