remote_cmd.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. #Whritted: dufs
  3. #E-mail: fengshan.du@zznode.com
  4. #Date: 2016-09-19 13:00
  5. # excute remote cmd
  6. SH_NAME=`basename $0`
  7. SH_HOME=$HOME/zsjk
  8. SH_Log=$SH_HOME/log/${0%\.sh*}.log
  9. function outlog {
  10. echo $*
  11. echo "`date '+%Y-%m-%d %T'` : " "$*" >> $SH_Log
  12. logSize=`ls -lrt $SH_Log|awk '{print $5}'`
  13. if [ $logSize -gt 10240000 ]
  14. then
  15. cp -rp $SH_Log $SH_Log.`date '+%Y-%m-%d'`
  16. gzip $SH_Log.`date '+%Y-%m-%d'`
  17. cat /dev/null>$SH_Log
  18. fi
  19. }
  20. outlog =============================================================
  21. if [ $# -ge 1 ]
  22. then
  23. cmd=$1
  24. else
  25. outlog need cmd, usage $0 cmd
  26. exit -1
  27. fi
  28. outlog start excute cmd $cmd
  29. ip_list=$SH_HOME/conf/hostchk.conf
  30. if [ ! -f $ip_list ]
  31. then
  32. outlog can not find $ip_list, please check !!!
  33. exit 0
  34. fi
  35. cd $SH_HOME/bin
  36. for line in `cat $ip_list`
  37. do
  38. sharppos=$(echo $line|awk '{print index($1,"#")}')
  39. if [ $sharppos = 1 ]
  40. then
  41. #echo remarked line,ignore
  42. continue
  43. fi
  44. outlog -------------------------------------------------------------
  45. Local_IP=`echo $line | awk -F"," '{print $1}'`
  46. chk_user=`echo $line | awk -F"," '{print $2}'`
  47. ssh_port=`echo $line | awk -F"," '{print $3}'`
  48. outlog read config: Local_IP $Local_IP ssh_port $ssh_port chk_user $chk_user
  49. sshTmp=$SH_HOME/data/$SH_NAME.$Local_IP.$ssh_port
  50. ssh -t -p $ssh_port $chk_user@$Local_IP "$cmd">$sshTmp
  51. while read line
  52. do
  53. outlog $line
  54. done < $sshTmp
  55. done
  56. outlog =============================================================
  57. exit 0