博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
utils/function_cmd_scp.sh
阅读量:4214 次
发布时间:2019-05-26

本文共 2644 字,大约阅读时间需要 8 分钟。

#! /bin/bashsshcmd(){#从第一个参数中获得要执行的命令	myssh_cmd="$1"	sleeptime=0#通过这个脚本执行命令	sh ${CUR_DIR}/sshcmd.sh -c "$myssh_cmd" -m "$IP" -u "$loginuser" -p "$loginpassword"#上面的命令执行失败后$? 会返回非0,因此这个if条件回城里	if [ $? -ne 0 ]; then                while true                do						#c5 表示ping 这个ip地址五次                        if ping -c5 "$IP" &> /dev/null; then                                break                        fi						#如果sleeptime 一空大于等于180次,则退出                        if [ $sleeptime -ge 180 ]; then                                echo "ERROR: ping $IP Failed"                                break                        fi						#睡眠60s                        sleep 60						#睡眠总的时间                        ((sleeptime = sleeptime + 60))                done#通过ping 主机和sleep 来等待主机反应				#由于前一次执行下面的命令failed了,通过前面的ping和sleep后,这里再次执行                sh ${CUR_DIR}/sshcmd.sh -c "$myssh_cmd" -m "$IP" -u "$loginuser" -p "$loginpassword"                if [ $? -ne 0 ]; then				#如果还是失败的话,则退出                	echo " Failed in sshscp.sh, maybe there is no enough space on $IP"                        exit 1                fi        fi		}sshscp(){	MYSOURCE="$1"	MYDESTDIR="$2"	isdir="$3"	tofrom="$4"	sleeptime=0	scpcmd=#根据isdir的值是is还是no ,已经tofrom 等于to还是from  分四种case开生成要执行命令的字符串	if [ "$isdir" = "is" ]; then		if [ $tofrom = "to" ]; then			scpcmd="sh ${CUR_DIR}/sshscp.sh -s $MYSOURCE -d $loginuser@$IP:$MYDESTDIR -p $loginpassword -r "		elif [ $tofrom = "from" ]; then			scpcmd="sh ${CUR_DIR}/sshscp.sh -s $loginuser@$IP:$MYSOURCE -d $MYDESTDIR -p $loginpassword -r "		else			echo "wrong tofrom parameter"			exit 1		fi	elif [ "$isdir" = "no" ]; then		if [ $tofrom = "to" ]; then                        scpcmd="sh ${CUR_DIR}/sshscp.sh -s $MYSOURCE -d $loginuser@$IP:$MYDESTDIR -p $loginpassword  "                elif [ $tofrom = "from" ]; then                        scpcmd="sh ${CUR_DIR}/sshscp.sh -s $loginuser@$IP:$MYSOURCE -d $MYDESTDIR -p $loginpassword  "                else                         echo "wrong tofrom parameter"                        exit 1                fi	else		echo "wrong isdir parameter"		exit 1	fi		echo "$scpcmd"#这里通过eval 来执行保存在字符串中的命令		eval $scpcmd	if [ $? -ne 0 ]; then#如果执行失败,则先ping 主机,看主机是否有反应,最多ping 5次,如果主机没有反应,则sleep 60s。然后再ping主机,由于sleep 最多sleep 180s#因此最多也就ping 3次,如果主机还没有反应的话,就退出了。#如果主机有反应了,则继续执行命令.		while true		do			if ping -c5 "$IP" &> /dev/null; then				break			fi			if [ $sleeptime -ge 180 ]; then				echo "ERROR: ping $IP Failed"				break			fi			sleep 60			((sleeptime = sleeptime + 60))		done		eval $scpcmd		if [ $? -ne 0 ]; then			echo " Failed in sshscp.sh, maybe there is no enough space on $IP"			exit 1		fi	fi}

转载地址:http://rejmi.baihongyu.com/

你可能感兴趣的文章
mark : JVM性能调优之生成堆的dump文件
查看>>
并发编程中的协程
查看>>
Spring Security
查看>>
Spring Security
查看>>
Mark : Hadoop源码解析之: TextInputFormat如何处理跨split的行
查看>>
Mark : Spark文章 收录
查看>>
Mark : Scala 文章收录
查看>>
Mark : 【Scala】使用Option、Some、None,避免使用null
查看>>
Mark : BlockingQueue在任务调度中的精彩应用
查看>>
Mark :BlockingQueue
查看>>
编程思想 - OpenHashMap 为什么比hashmap 快
查看>>
IPFS
查看>>
EOS 搭建本地运行环境
查看>>
待续 总结 - parquet 与 avro
查看>>
Mark : Spark RDD 内部结构(二) RDD分区
查看>>
Mark:Spark RDD之Partition
查看>>
教你如何一步步创建ERC20代币
查看>>
Mark : 谷歌验证器的原理及实现
查看>>
Mark : Kafka分区机制介绍与示例
查看>>
Java中>>和>>>的区别
查看>>