原文参考文档:
sftp远程与本地文件传输:https://blog.csdn.net/Jolting/article/details/81700732
sftp
Secure Ftp 是一个基于SSH安全协议的文件传输管理工具。由于它是基于SSH的,会在传输过程中对用户的密码、数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中被窃取,比FTP有更高的安全性。在功能方面与FTP很类似,不仅可以传输文件数据,而且可以进行远程的文件管理(如建立,删除,查看文件列表等操作)。Sftp与ftp虽然只有一字之差,但基于的传输协议却是不同的。因此不能用sftp client去连接ftp server 也不能用 ftp client 去连接 sftp server。
简单的语法如下:
1.sftp远程与本地文件传输:
原文: https://blog.csdn.net/Jolting/article/details/81700732
原文:https://blog.csdn.net/stpeace/article/details/39404449
命令说明:
lls:查看本地目录文件
lcd :切换本地目录
ls:查看服务器端目录文件
cd:切换服务器目录
这四个命令任意切换,多加‘l’的就是本地的查看、切换,ls,cd就是服务器端的查看,切换
-
sftp user@ip
你要用sftp, 当然得登录到sftp服务器啊, 在linux的shell中执行上面的命令后, linux shell会提示用户输入密码, 我们就输入password吧。 这样就成功建立了sftp连接。 -
help
建立连接后, linux shell中的$编程了sftp>, 这也对。 现在执行以下help, 可以看看sftp支持哪些命令。
-
pwd和lpwd
pwd是看远端服务器的目录, 即sftp服务器默认的当前目录。 lpwd是看linux本地目录。
-
put a.txt
这个是把linux当前目录下的a.txt文件上传到sftp服务器的当前目录下。
-
get b.txt
这个是把sftp服务器当前目录下的b.txt文件下载到linux当前目录下。
-
!command
这个是指在linux上执行command这个命令, 比如!ls是列举linux当前目录下的东东, !rm a.txt是删除linux当前目录下的a.txt文件。 这个命令非常非常有用, 因为在sftp> 后输入命令, 默认值针对sftp服务器的, 所以执行rm a.txt删除的是sftp服务器上的a.txt文件, 而非本地的linux上的a.txt文件。
-
exit和quit
退出。
总之, 连接后, 有一个help命令可帮助查看
2.具体使用方法
#!/usr/bin/expect -f
set USER [lindex $argv 0]
set HOSTADDR [lindex $argv 1]
set PASSWORD [lindex $argv 2]
set GET_PATH [lindex $argv 3]
set GET_FILE_NAME [lindex $argv 4]
spawn sftp ${USER}@${HOSTADDR}
expect "${USER}@${HOSTADDR}'s password:"
set timeout 300
send "${PASSWORD}\n"
expect "sftp>"
send "cd ${GET_PATH}\n"
expect "sftp>"
send "mget ${GET_FILE_NAME}\n"
set timeout 3000
expect "sftp>"
send "exit\n"
expect eof
``实际运用:
echo "sftp $1 begin"
USER="xxx"
HOSTADDR="xxx"
PASSWORD="xxx"
GET_PATH="xxx"
GET_FILE_NAME="${1}"
xxx/xxx.sh $USER $HOSTADDR $PASSWORD $GET_PATH $GET_FILE_NAME
echo "sftp $1 Over"`