sftp描述
sftp是一个交互式的文件传输协议,类似于ftp,但它进行加密传输,比ftp更安全,SFTP 是 SSH 协议的一部分
sftp命令讲解
get 远程路径 --下载文件
put 本地路径 --上传文件
cd 路径 --切换远程目录到“路径”
lcd 路径 --切换本地目录到“路径”
dir --列出远程目录内容
mget --下载多个文件
mput --上传多个文件
pwd --显示远程计算机工作目录
send --发送一个文件
size --显示远程文件大小
bye、exit、quit、! --断开sftp链接
sftp命令演示
1:下载文件 --get
sftp>get /sftpDir/remote.jsp /localDir
2:上传文件 --put
sftp>put /localDir/local.jsp /sftpDir
sftp封装脚本
命令讲解
spawn: --交互程序开始后面跟命令或者指定程序
expect: --获取匹配信息匹配成功则执行expect后面的程序动作
send: --用于向进程发送字符串 换行符为确认结束(\r)
interact: --允许用户交互
exp_continue: --在expect中多次匹配就需要用到
send_user: --用来打印输出 相当于shell中的echo
exit: --退出expect脚本
eof: --expect执行结束 退出
set timeout: --设置超时时间(单位是:s ; 20s:20秒后超时;-1 表示永不超时)
脚本演示
sftp_file()
{
expcmd=`which expect`
$expcmd <<EOF
spawn sftp $userName@$ip
expect {
"yes/no" {send "yes\r" ; exp_continue;}
"*password:" {send "${password}\r"}
}
expect "sftp>"
send "lcd path\r" # 切换至本地目录
expect "sftp>"
send "cd path\r" # 切换至ftp目录
expect "sftp>"
set timeout -1 # 设置超时时间 -1表示永不超时 n表示多少秒
send "put fileName\r" # 将本地文件上传ftp服务
expect "sftp>"
send "ls -l fileName\r" #查看ftp上文件
expect "sftp>"
send "bye\r"
expect eof
EOF
}