Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 预期脚本:从文件读取Base64密码_Linux_Base64_Tcl_Expect - Fatal编程技术网

Linux 预期脚本:从文件读取Base64密码

Linux 预期脚本:从文件读取Base64密码,linux,base64,tcl,expect,Linux,Base64,Tcl,Expect,我已经创建了一个脚本,它将使用SFTP连接到服务器。 为了避免将密码作为纯文本放入脚本中,我计划将其放入一个用base64编码的文件中。 我能从文件中读出来没问题。但我不知道如何用Expect解码base64。 现在,脚本读取文件并(直接)将密码放入脚本中。如何解码? 我已经准备好将所有脚本移回Shell/bash,如果有一个好的方法来做这样的事情的话 多谢各位。代码如下: #!/usr/bin/expect set myPassword [open "sftp_auth.cfg" r] set

我已经创建了一个脚本,它将使用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的命令来解码密码。例如:

[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] #
您可以使用Tcl的命令来解码密码。例如:

[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,因此最好的方法是使用公钥身份验证。搜索“sftp公钥”

  • 您可以安装,然后执行

  • 呼叫
    base64

    set pw [exec base64 -d sftp_auth.cfg]
    
  • 最好确保auth文件没有世界可读权限:base64并不是完全加密安全的

  • 由于您使用的是Sftp,因此最好的方法是使用公钥身份验证。搜索“sftp公钥”

  • 您可以安装,然后执行

  • 呼叫
    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
    

    如果您使用的是Tcl 8.6,则内置了base64支持(包括解码)

    set f [open "sftp_auth.cfg" r]
    set password [binary decode base64 [read $f]]
    close $f
    

    由于编码的密码已经在一个文件中,所以让base64读取该文件:
    set passwd[exec base64-d sftp\u auth.cfg]
    谢谢。这正是我想要的。由于编码密码已经在一个文件中,让base64读取该文件:
    set passwd[exec base64-d sftp_auth.cfg]
    谢谢。这正是我想要的。是的,我知道base64。我正计划向团队提出使用公钥/私钥身份验证的想法。谢谢有时候在文件系统上以明文形式存储密码是最简单的解决方案,如果你能忍受明显的安全性不足的话。在这一点上,混淆密码是没有意义的,特别是因为expect脚本也是纯文本的,而且“解密”方法在那里可以看到。是的,我完全知道这一点,谢谢你指出。我会更深入地研究这个问题,看看我能做些什么。是的,我知道base64。我正计划向团队提出使用公钥/私钥身份验证的想法。谢谢有时候在文件系统上以明文形式存储密码是最简单的解决方案,如果你能忍受明显的安全性不足的话。在这一点上,混淆密码是没有意义的,特别是因为expect脚本也是纯文本的,而且“解密”方法在那里可以看到。是的,我完全知道这一点,谢谢你指出。我将深入研究这个主题,看看我能做些什么。对于那些在expect脚本中查看如何从文件中读取用户名和密码的人:对于那些在expect脚本中查看如何从文件中读取用户名和密码的人: