期望脚本:从文件中读取 Base64 密码
Expect script: Read Base64 password from file
我创建了一个使用 SFTP 连接到服务器的脚本。
为避免将密码作为纯文本放入脚本中,我计划将其放入以 base64 编码的文件中。
我可以从文件中读取没问题。但我不知道如何用 Expect 解码 base64。
所以,现在,脚本读取文件并将密码(直接)放入脚本中。如何解码?
如果有好的方法,我准备将所有脚本移回 Shell/bash。
谢谢。这是代码:
#!/usr/bin/expect
set myPassword [open "sftp_auth.cfg" r]
set data [read $myPassword]
spawn sftp myUser@111.111.111.111
expect "*assword:"
send "$data\n"
expect "sftp>"
send "cd /repository\n"
expect "sftp>"
send "get Example.sh /home/User/Example2.sh\n"
expect "sftp>"
send "exit\n"
interact
您可以使用Tcl 的exec
命令来解码密码。例如:
[STEP 101] # cat foo.exp
set base64_passwd UGFzc3cwcmQ=
set passwd [exec echo $base64_passwd | base64 -d]
puts $passwd
[STEP 102] # expect foo.exp
Passw0rd
[STEP 103] #
因为你正在使用 Sftp,所以最好的方法是使用 public 密钥验证。搜索 "sftp public keys"
您可以安装 the tcllib
package,然后执行
package require base64
set f [open sftp_auth.cfg]
gets $f data
close $f
set pw [::base64::decode $data]
呼唤base64
set pw [exec base64 -d sftp_auth.cfg]
最好确保 auth 文件没有任何人可读的权限:base64 在密码学上并不完全安全。
如果您使用的是 Tcl 8.6,则内置了 base64 支持(包括解码)。
set f [open "sftp_auth.cfg" r]
set password [binary decode base64 [read $f]]
close $f
我创建了一个使用 SFTP 连接到服务器的脚本。 为避免将密码作为纯文本放入脚本中,我计划将其放入以 base64 编码的文件中。 我可以从文件中读取没问题。但我不知道如何用 Expect 解码 base64。 所以,现在,脚本读取文件并将密码(直接)放入脚本中。如何解码? 如果有好的方法,我准备将所有脚本移回 Shell/bash。
谢谢。这是代码:
#!/usr/bin/expect
set myPassword [open "sftp_auth.cfg" r]
set data [read $myPassword]
spawn sftp myUser@111.111.111.111
expect "*assword:"
send "$data\n"
expect "sftp>"
send "cd /repository\n"
expect "sftp>"
send "get Example.sh /home/User/Example2.sh\n"
expect "sftp>"
send "exit\n"
interact
您可以使用Tcl 的exec
命令来解码密码。例如:
[STEP 101] # cat foo.exp
set base64_passwd UGFzc3cwcmQ=
set passwd [exec echo $base64_passwd | base64 -d]
puts $passwd
[STEP 102] # expect foo.exp
Passw0rd
[STEP 103] #
因为你正在使用 Sftp,所以最好的方法是使用 public 密钥验证。搜索 "sftp public keys"
您可以安装 the
tcllib
package,然后执行package require base64 set f [open sftp_auth.cfg] gets $f data close $f set pw [::base64::decode $data]
呼唤
base64
set pw [exec base64 -d sftp_auth.cfg]
最好确保 auth 文件没有任何人可读的权限:base64 在密码学上并不完全安全。
如果您使用的是 Tcl 8.6,则内置了 base64 支持(包括解码)。
set f [open "sftp_auth.cfg" r]
set password [binary decode base64 [read $f]]
close $f