我开发了一个脚本来查询远程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>