失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 编写shell脚本-sftp上传文件

编写shell脚本-sftp上传文件

时间:2020-04-06 02:25:28

相关推荐

编写shell脚本-sftp上传文件

先简单的写一下shell脚本的流程。

#创建一个sh文件nano yulisao.sh#编写shell脚本命令# 略,根据自己需要编写。示例如下#! /bin/shecho "请输入字母y "read yourdataif [ "Y" = ${yourdata} -o "y" = ${yourdata} ]then echo "你输入的是字母y"elseecho "你输入的不是字母y"fi# 赋可执行权限 755 或者 777chmod 755 yulisao.sh# 检查脚本(可省,无错则无返回,有错会显示错误信息)sh -n yulisao.sh# 执行脚本(无参数可省略参数)sh yulisao.sh 参数1 参数2...

nano命令

nano是文本编辑器命令,打开/新建一个文件,回车后自动到了新建的文件里面,和vi/vim命令一样是编辑文本。因为是一个不存在的文件所以此处作用也类似 touch yulisao.sh 创建新文件并打开。

快捷命令Ctrl+

搜索 W 然后直接输入搜索内容回车,被搜到的内容被标记出来

保存 O 如有改动会询问是否保存,选Y会继续让你确认保存的文件名,改名则直接输入新文件名(即另存为),不改直接回车即可 (即原文件保存)

退出 X

粘贴 U

上一页 Y

下一页 V

注意点:

Linux系统大小写敏感空格不能少的不能省,注意检查Window系统下写的脚本上传到Linux后最好改一下文件格式,不然运行时候容易出现unexpected end of file错误。因为在Window/dos下回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下回车键只输入“换行(LF)”,所以Window系统下写的sh文件在每行都会多了一个CR,到Linux下运行时就会报错找不到命令。

设置方法: 首先编辑脚本 vi ***.sh 然后查看是否是unix格式,输入 :set ff 回车看左下角显示fileformat的值是dos还是unix,如果不是则输入 :set ff=unix 回车在 :wq! 保存即可。

下面写了一个sftp上传文件的shell脚本。可以通过命令执行或者利用java代码调用执行都方便些。

#!/bin/shif [ $# -lt 7 ]; thenecho "${0}缺少必填参数,请检查"echo '参数:远程服务器地址 用户名 密码 端口 目录 本地目录 文件名' exit -1fi#SFTP地址SERVER_IP=${1}#SFTP用户SERVER_USER=${2}#SFTP密码SERVER_PASS=${3}#SFTP端口SERVER_PORT=${4}#远程服务器目录REMOTE_DIR=${5}#本地服务器目录LOCAL_DIR=${6}#上传文件名UPLOAD_FILE=${7}#本地服务器目录如果不存在则创建if [ ! -d ${LOCAL_DIR} ]thenecho "开始创建本地目录 ${LOCAL_DIR}"mkdir -p ${LOCAL_DIR}if [ $? -ne 0 ]thenecho "创建目录 ${LOCAL_DIR} 出错"exit -2fifi#上传文件lftp -u ${SERVER_USER},${SERVER_PASS} sftp://${SERVER_IP}:${SERVER_PORT}<<EOFset net:timeout 5;set net:max-retries:2;set net:reconnect-interval-multiplier 1;set net:reconnect-interval-base 5;lcd ${LOCAL_DIR}mkdir ${REMOTE_DIR}cd ${REMOTE_DIR}put ${UPLOAD_FILE}byEOF

调用方式:

sh sftpput.sh 192.168.1.1 sftp sftp 22 /home/sftp/test /home/opt/myfile test.txt

脚本内置参数如下:

$# 传递给脚本的参数个数

$? 上一条脚本的执行结果,等于0表示成功,非0则不成功

$* 传递给脚本的所有参数组成的字符串

$n 传递给脚本的第n个参数,$1 表示第一个参数,2表示第二个参数...注:也可以写成2 表示第二个参数 ... 注:也可以写成2表示第二个参数...注:也可以写成{1},${2}… 10以上的必须用大括号这种格式。传参是从1开始的,因为$0固定是取当前脚本文件名

$$ 本脚本的PID(进程ID号)

$! 上一个命令的PID

if 条件判断

1、字符串判断

str1 = str2 等于

str1 != str2 不等与

-n str1 非空(长度大于0, -n 可省)

-z str1 空(长度等于0)

2、数字判断

int1 -eq int2 等于

int1 -ne int2 不等与

int1 -gt int2 大于

int1 -ge int2 大于等于

int1 -lt int2 小于

int1 -le int2 小于等于

3、文件判断

-r file是否可读

-w file是否可写

-x file是否可执行

-f file是否文件

-d file是否目录

-s file是否空文件(文件大小非0)

4、逻辑判断

-a 与

-o 或

! 非

5、浮点型不支持

如果觉得《编写shell脚本-sftp上传文件》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。