我如何获得Expect命令的输出打印

时间:2019-10-15 10:12:51

标签: shell

我开发了一个脚本来查询远程sftp服务器中的文件列表。 当我使用set val $expect_out(buffer)ls的命令结果保存在远程服务器中时,以下代码如下。但是我什么都没有。 如果有人可以给我解释,我将非常感谢。

function sftp_list()
{
    sftp_server=$1
    user=$2
    sftp_pwd=$3
    port=$4
    remote_path=$5
    expect -c "
        set timeout 5
        spawn sftp -P ${port} ${user}@${sftp_server}
        expect {
            \"(yes/no)?\" {send \"yes\r\"; expect_continue}
            \"password:\" {send \"${sftp_pwd}\r\"}
            \"Password:\" {send \"${sftp_pwd}\r\"}
        }
        expect \"sftp>\"
        send \"cd ${remote_path}\r\"
        expect \"sftp>\"
        send \"ls\r\"
        expect \"sftp>\"
        set val $expect_out(buffer)
        send \"bye\r\"
        expect eof
    "
    echo "result is [${val}]"
}

当我用bash执行命令时,我得到的文件列表如下:

x00004:/home/poc/src # sftp -P 22 sftpuser@XXX.XXX.XXX.XXX
Password: 
Connected to XXX.XXX.XXX.XXX.
sftp> cd /sftppath
sftp> ls
file1  file2  file3  
sftp> 

0 个答案:

没有答案