您好,登錄后才能下訂單哦!
這是我之前寫的一個shell腳本,用于linux/unix系統間的文件自動備份。
腳本的主要功能有:
用于不同服務器間當天的文件的同步或拷貝;需要expect命令支持,RHEL和AIX測試正常,需要expect命令支持(unix系統需要修改腳本第一行的#!/bin/bash為系統SHELL);
使用要求:
系統expect命令可用;目標(遠程)設備文件夾存在且可有相應權限。
適用情況(以下場景測試正常):
一臺設備同一文件夾向一臺或多臺遠程設備相同或不同文件夾拷貝文件
一臺設備不同文件夾向一臺或多臺遠程設備相同或不同文件夾拷貝文件
AIX系統間文件非實時同步
AIX和RHEL系統間文件非實時同步
RHEL系統間文件非實時同步
使用前請先進行測試。
aix_trans.sh腳本代碼如下:
#!/bin/bash #Author:ZJ #QQ:1037509307 #DateTime: 2016-07-09 01:41:14 #Description: #用于不同服務器間當天的文件的同步或拷貝;需要expect命令支持,RHEL和AIX測試正常,需要expect命令支持。 #aix系統需要修改頭文件; #使用要求:系統expect命令可用;目標(遠程)設備文件夾存在且可訪問。 #適用情況: #一臺設備同一文件夾向一臺或多臺遠程設備相同或不同文件夾拷貝文件 #一臺設備不同文件夾向一臺或多臺遠程設備相同或不同文件夾拷貝文件 #Version: v1.3 ########################################源設備信息########################################## #源設備文件路徑1 (路徑最后不要加斜線/) Source_Path_1=/usr/appsoft/EasyCfg/system_check/warnlog #源設備文件壓縮包名稱1 File_Name_1=file1.zip #若需要同步該設備的其他文件夾,請按照上述格式繼續添加變量即可,示例 #源設備文件路徑2 #Source_Path_2=xxxx #源設備文件壓縮包名稱2 #File_Name_2=file2.zip ###################################第一臺目標設備信息####################################### #目標設備IP地址 Target_IP_A=192.168.101.206 #目標設備密碼 Target_Passwd_A=iES@1234 #目標設備文件存放路徑(請確保該文件夾存在且可被訪問) Target_Path_A1=/usr/appsoft/jieya #若需要將文件同步到該設備的不同文件夾下,請繼續添加文件存放路徑即可變量即可,示例 #Target_Path_A2=/usr/appsoft/jieya1 #Target_Path_A3=/usr/appsoft/jieya2 #若需要添加其他目標設備,請按照“第一臺目標設備信息”進行添加,示例: ###################################第二臺目標設備信息####################################### #目標設備IP地址 #Target_IP_B=192.168.101.206 #目標設備密碼 #Target_Passwd_B=iES@1234 #目標設備文件存放路徑(請確保該文件夾存在且可被訪問) #Target_Path_B1=/usr/appsoft/jieya ############################################################################################ Get_Syslog(){ LANG=EN Month=`date +%b` Day=`date +%e` Ip=$1 PASSWD=$2 Source_Path=$3 Target_Path=$4 File_Name=$5 cd "${Source_Path}" ls -l | egrep "${Month}[[:space:]]+${Day}" | awk '{print $9}' | xargs zip -r ${File_Name} expect -c " set timeout -1 spawn scp -r -p ${Source_Path}/${File_Name} root@${Ip}:${Target_Path} expect { \"*yes/no)?\" {send \"yes\r\";exp_continue} \"*password:\" {send \"${PASSWD}\r\";exp_continue} \"*unreachable\" {exit 1} \"*Permission denied*\" {exit 2} \"*No route to host*\" {exit 3} \"*failure*\" {exit 4} \"*No such file or directory*\" {exit 5} \"*No match*\" {exit 6} \"*failed*\" {exit 7} expect eof } spawn ssh root@${Ip} cd $Target_Path && unzip -o $File_Name -d $Target_Path && rm -rf $Target_Path/$File_Name expect { \"*yes/no)?\" {send \"yes\r\";exp_continue} \"*password:\" {send \"${PASSWD}\r\";exp_continue} \"*unreachable\" {exit 1} \"*Permission denied*\" {exit 2} \"*No route to host*\" {exit 3} \"*failure*\" {exit 4} \"*No such file or directory*\" {exit 5} \"*No match*\" {exit 6} \"*failed*\" {exit 7} expect eof }" } #Get_Syslog右括號 #Tips: #Get_Syslog "目標主機IP" "目標主機密碼" "源主機文件路徑" "目標主機文件路徑" "壓縮包名稱" #如果需要傳送多個文件夾的文件,按照下面的命令格式依次添加即可 Get_Syslog "${Target_IP_A}" "${Target_Passwd_A}" "${Source_Path_1}" "${Target_Path_A1}" "${File_Name_1}" #示例 #Get_Syslog "$Target_IP_A" "$Target_Passwd_A" "$WEB_Path_From_2" "$Target_Path_A1" "$File_Name_2"
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。