首页 > 系统相关 >【shell脚本】远程传参例

【shell脚本】远程传参例

时间:2024-10-12 15:24:19浏览次数:6  
标签:FTP shell DEST MID 传参例 echo ret 远程 DIR

原创 luojiabao lv51933


#!/bin/bash
# add by hkbn 2024/05/10

# upload files in ErpAck
#ebs server
#...
ret=0
#app server
SRC_FTP_BASE="/HNAS/CUX003/Esker/files"
#middle server
L_DEST_FTP_USER="erpclient";
L_DEST_FTP_SERVER="192.168.90.194";
L_DEST_FTP_BASE="/home/erpclient/Esker/file"


#middle server -> sftp server
#middle->QA sftp
#ErpAck           ErpAck     
#In               In 
#In_InvoicesUpdate        In_InvoicesUpdate
#In_MasterData          In_MasterData
#In_PaidInvoices        In_PaidInvoices
#In_BudgetImport      In_BudgetImport 
#In_ContractImport      In_ContractImport   
#In_FiscalArchivesUpdate  In_FiscalArchivesUpdate


#move files to archive rather than clean them ,
#find $L_DEST_FTP_BASE/$L_DEST_FTP_NAME/ -maxdepth 1 -type f -exec rm -rf {} \;
#if [[ "$(ls -A $L_DEST_FTP_BASE/$L_DEST_FTP_NAME/ | wc -l)" -eq 0 ]]; then
#    echo "clean files success!"
#else
#    echo "clean files failed,plz chk the folder $L_DEST_FTP_BASE/$L_DEST_FTP_NAME/ !"
#    ret=$?
#    exit $ret
#fi


#esker sftp server
#R_DEST_FTP_USER="[email protected]"
R_DEST_FTP_USER="[email protected]"
R_DEST_FTP_SERVER="sftp-az3.ondemand.esker.com"

MID_DIRS=("ErpAck" "In" "In_InvoicesUpdate" "In_MasterData" "In_PaidInvoices" "In_BudgetImport" "In_ContractImport" "In_FiscalArchivesUpdate")  
echo "start :: loading upload files from middle to sftp ..."
MID_SOURCE_DIR=""
REMOTE_DEST_DIR=""
FILES=0
echo "before middle->sft ; ret: $ret"

if [[ $ret -eq 0 ]]; then
  for L_DEST_FTP_NAME in "${MID_DIRS[@]}"; do  
      MID_SOURCE_DIR="${L_DEST_FTP_BASE}/${L_DEST_FTP_NAME}"  
      MID_ARCHIVE_DIR="${MID_SOURCE_DIR}/archive"


      echo "MID_SOURCE_DIR :: $MID_SOURCE_DIR"
      echo "L_DEST_FTP_NAME :: $L_DEST_FTP_NAME"


      if [ "$L_DEST_FTP_NAME" == "Out_Payment" ]; then  
        REMOTE_DEST_DIR="Out_PaidInvoices"  
      else  
        REMOTE_DEST_DIR="$L_DEST_FTP_NAME"  
      fi


      echo "REMOTE_DEST_DIR: $REMOTE_DEST_DIR"
     
ssh -t -o StrictHostKeyChecking=no -oBatchMode=no ${L_DEST_FTP_USER}@${L_DEST_FTP_SERVER} "bash -s" ${L_DEST_FTP_NAME} ${MID_SOURCE_DIR} ${MID_ARCHIVE_DIR} ${L_DEST_FTP_BASE} ${R_DEST_FTP_USER} ${R_DEST_FTP_SERVER} ${REMOTE_DEST_DIR} << 'ENDSSH'
    echo "add file to deffiles for $1..."
    echo "traversing folder on $2..."    
    echo "following mid server archive on $3..."
    echo "base dest path is $4..."
    
    declare -a deffiles
    deffiles=()
    for file in "${2}"/*; do
     if [[ -f "$file" ]]; then
       deffiles+=("$(basename "$file")")
     fi
    done
    
   echo "the files are ${deffiles[@]}"
   echo "sftp user: ${5}, sftp server: ${6}"
   sftp -oBatchMode=no ${5}@${6} << ENDSFTP
    cd ${7}/
    put ${4}/${1}/*
    bye
ENDSFTP


   if [[ "${#deffiles[@]}" -gt 0 ]]; then
     echo "The following files on the path $2 will be moved to the $3"
     echo "=> ${deffiles[@]}"
     
     for f in "${deffiles[@]}"; do
       mv ${2}/$f $3
     done
   else
     echo "$2 have no files need to be moved to archive."
   fi
   chmod -R 755 ${4}/Out
ENDSSH
     
  done
else
  echo "transfer files from app to middle occur errors that influence uploading files from middle to sftp,pls chk previous steps!"
  ret=$?
  echo "ret: $ret"
fi

#exit with success 
if [ $ret -eq 0 ]; then  
    echo "All directories processed successfully"  
fi  

exit $ret

参考

标签:FTP,shell,DEST,MID,传参例,echo,ret,远程,DIR
From: https://www.cnblogs.com/o-O-oO/p/18460611

相关文章

  • 安全:列出linux中可登录shell/ssh/sudo的用户
    一,列出可登录shell的用户root@lhdpc:~#grepbash/etc/passwdroot:x:0:0:root:/root:/bin/bashliuhongdi:x:1000:1000:liuhongdi,,,:/home/liuhongdi:/bin/bash只显示用户名:root@lhdpc:~#grepbash/etc/passwd|cut-d:-f1rootliuhongdi也可以把常见的3个不允许登录......
  • 【汇总】Linux shell 数组使用
    前言全局说明【汇总】Linuxshell数组使用一、说明环境:Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMPWedMay2400:51:42UTC2023x86_64x86_64x86_64GNU/Linux)二、创建数组2.1声明一个空数组test_array=()2.2创建数组test......
  • shell 命令vim 打开文件后,如何到文件的最后一行
    背景:打开文件后如何到达文件最后一行,shell操作命令。愿我们终有重逢之时,而你还记得我们曾经讨论的话题。QQgroup 868373192QQsecondgroup 277356808解决方案:在Vim编辑器中,你可以使用以下几种方法快速跳转到文件的最后一行:###方法1:使用`G`命令-按下`G`键......
  • Ubuntu安装向日葵远程控制
    官网下载,图形版本 https://sunlogin.oray.com/download/linux?type=personal 先安装个依赖libgconf-2-4,否则可能安装失败添加源(我习惯用vscode作为文本编辑工具)sudocode/etc/apt/sources.list.d/ubuntu.sources添加Types:debURIs:http://cz.archive.ubuntu.com/ubu......
  • 在Linux中搭建WordPress并实现Windows主机远程访问
      WordPreWordPress是一个基于PHP开发的开源平台,适用于在支持PHP与MySQL数据库的服务器上搭建个性化博客或网站。同时,它也能够作为功能强大的内容管理系统(CMS)被广泛应用。虚拟机:VirtualBox虚拟机安装......
  • shell的选择结构
     一、分支结构结合test指令完成一下编程1>判断闰年2>输入一个数判断是否为偶数3>使用test指令实现成绩等级判断90--100A60--89B0-50C其他错误 #!/bin/bash#分支结构结合test指令完成以下编程#1判断是否闰年read-p"请输入年份:"yearif[$((year%4))-eq0......
  • 从0开始实现自己的Shell
    实现自己的Shell(计蒜客996第三周实验)目录实现自己的Shell(计蒜客996第三周实验)进程、地址空间与线程进程和地址空间线程进程控制块进程状态与用户态和内核态之间的切换进程状态三态模型五态模型子进程与父进程fork()exit()wait()waitpid()exec()实验:设计自己的shell第一部分:log_t......
  • shell 中怎么定义常量
    在Shell脚本中,定义常量通常使用大写字母和下划线来表示,这是一种约定俗成的命名方式,以区分常量和变量。定义常量可以使用以下两种方法之一:使用readonly命令:shell#!/bin/bashreadonlyMY_CONSTANT="some_value"echo$MY_CONSTANT使用readonly命令可以确保变量的值在脚本......
  • shell 怎么获取参数的长度
    在这个示例中,${#param}会返回变量param的长度。这里param是脚本的第一个参数,即$1。如果你想获取特定参数的长度,只需将param替换为相应的变量,例如$2表示第二个参数,以此类推。完整示例脚本如下:shell#!/bin/bash#打印所有参数echo"Allparameters:$*"#打印所有参数,以......
  • 1.7k star,一款网页版的跨平台远程控制和监控神器,附下载链接。
    今天给大家介绍一个免费、安全、开源、基于网页、跨平台且功能丰富的远程管理工具,可以通过浏览器,随时随地管理设备。工具下载链接下载链接:工具下载介绍Spark是一个Go编写的,网页UI、跨平台以及多功能的远程控制和监控工具,你可以随时随地监控和控制所有设备。亮点:本......