[SAP BASIS][shell] shell 实战之远程复制传输

需求: 日常工作经常需要将传输从一个系统传到别一个系统 ,需手工拷贝传输的数据文件和控制文件

前提: SAP服务器名字: <sapsid>a  例子: D4C 系统主机是 d4ca ;Q4C 系统主机是q4ca

解析: 传输号: DECK000004 有两个文件, 数据文件R000004.DEC 控制文件K000004.DEC

使用方法

  1. remotetecopy DECK000004 D4C
  2. remotetecopy R000004.DEC D4C
  3. remotetecopy K000004.DEC D4C
#!/bin/bash
#####################################################################################################################
#auther : __tingxin__                                                                                               #
#date   : 2020-Mar-29                                                                                               #
#version: 1.0                                                                                                       #
#Funtion: 远程将传输号从一个SAP服务器复制到另一个服务器并加入到传输队列                                                 #
#                                                                                                                   #
#                                                                                                                   #
#parametr:                                                                                                          #
#           <Transport_number>     传输号                                                                           #
#            <SAPSID>              目标SAP系统SAPID                                                                 #
#usage    : trcopy     Transport_number    SAPSID                                                           #
#                                                                                                                   #
#####################################################################################################################

if [ $# -lt 2 ]
then
  printf "=========================================================="
  printf "check_backup - check if backup exist for date"
  printf "Syntax: remotetecopy <Transport_number>  <SAPSID>"
  exit 
fi

if [ $(echo $2|cut -c 1) = "P" ]
then
  printf "can't directly import to production system "
  printf "pls start import Develop system first "
  exit
fi
typeset -u STR=$1 echo $STR SSID="" ssid="" shost="" transportid="" TSID=$2 typeset -l tsid=$2 targethost=${tsid}a if [ ${#STR} -eq 10 ]; then SSID=$(echo $STR|cut -c 1-3) echo "Source system is $SSID" typeset -l ssid=$SSID shost=${ssid}a          #source host echo "Source host is $shost" transportid=${SSID}K$(echo $STR|cut -c 5-10) echo "transport number is $transportid" trcofile=K$(echo $STR|cut -c 5-10).${SSID} trdatafile=R$(echo $STR|cut -c 5-10).${SSID} else SSID=$(echo $STR|cut -c 9-11) #source SAPSID echo "Source system is $SSID" typeset -l ssid=$SSID shost=${ssid}a         #source host echo "Source host is $shost" transportid=${SSID}K$(echo $STR|cut -c 2-7) echo "transport number is $transportid" trcofile=K$(echo $STR|cut -c 2-7).$SSID trdatafile=R$(echo $STR|cut -c 2-7).$SSID fi ssh $shost "test -e "/usr/sap/trans/cofiles/${trcofile}"" if [ $? -eq 0 ];then echo "$transportid cofiles is exist in host $shost" fi ssh $shost "test -e "/usr/sap/trans/data/${trdatafile}"" if [ $? -eq 0 ];then echo "$transportid data file is exist in host $shost" fi echo "start copy cofile $trcofile" ssh -q $targethost "scp -p $shost:/usr/sap/trans/cofiles/${trcofile} /usr/sap/trans/cofiles/" if [ $? -eq 0 ];then echo "copy cofile $trcofile successfully" fi echo "start copy data $trcofile" ssh -q $targethost "scp -p $shost:/usr/sap/trans/data/${trdatafile} /usr/sap/trans/data/" if [ $? -eq 0 ];then echo "copy cofile $trdatafile successfully" fi echo "start change tranport permission" ssh -q $targethost "chown ${tsid}adm:sapsys /usr/sap/trans/data/${trdatafile}" ssh -q $targethost "chown ${tsid}adm:sapsys /usr/sap/trans/cofiles/${trcofile}" if [ $? -eq 0 ];then echo "change the permission of ${transportid} successfully"
fi

echo "add transport ${transportid} to buffer"
ssh -q $targethost " su - ${tsid}adm -c tp addtobuffer ${transportid} ${TSID} pf=/usr/sap/trans/bin/TP_DOMAIN_${TSID}.PFL"
if [ $? -eq 0 ];then
  
echo "add transport ${transportid} to buffer successfully"
fi

 结果

root@d4ca:/NT/CCS/script/lih8hz $ remote_tr_copy.sh DECK000004  D4C
DECK000004 
Source system is DEC
Source host is deca
transport number is DECK000004 
DECK000004 cofiles  is exist in host deca
DECK000004 data file is exist in host deca
start copy cofile K000004.DEC
copy cofile K000004.DEC successfully
start copy data K000004.DEC
copy cofile R000004.DEC successfully
start change tranport permission
change the permission of DECK000004 successfully
add transport DECK000004 to buffer
This is tp version 380.70.10 (release 749, unicode enabled)
Warning: Parameter DBLIBPATH is no longer used.
Warning: Parameter DBSWPATH is no longer used.
Addtobuffer successful for DECK000004
tp finished with return code: 0
meaning:
  Everything OK
add transport DECK000004 to buffer successfully
每天进步一点点,多思考,多总结 版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文地址:https://www.cnblogs.com/tingxin/p/12591544.html