Bash 期望解密密码

Bash Expect decrypt password

  1. 我在本地系统上保存的名为 phrase 的文件中有密码:OXyqRC694pvKQ1FNfIYZQOKS

  2. 加密我的密码: 回声 "ITSMYPASSWORD" | openssl enc -aes-128-cbc -a -salt -pass pass:OXyqRC694pvKQ1FNfIYZQOKS

  3. 在 expect 脚本中,我试图在执行 scp 之前解密密码,但在解密密码时出现错误 "bad decrypt"

    #!/usr/bin/expect

    set upassword [lindex $argv 0]

    set oF [open "phrase" r]
    set dpassword [read $oF]

    puts $upassword
    puts $dpassword

    puts "echo $upassword | openssl enc -aes-128-cbc -a -d -salt -pass pass:$dpassword"
    #if i execute ouput of above line in shell, i am able to decrypt the password, 
    # but below exec command doesnot not work.         

    exec echo $upassword | openssl enc -aes-128-cbc -a -d -salt -pass pass:$dpassword

我该如何解决这个问题?

在 Tcl 中,read command 将包含结束文件的换行符。试试这个:

set dpassword [read -nonewline $oF]

此外,exec command 有一个 << 重定向,用于将字符串发送到命令的标准输入:

exec openssl enc -aes-128-cbc -a -d -salt -pass pass:$dpassword << $upassword