linux_wiki:command_many_systems_part2_send_cmd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
linux_wiki:command_many_systems_part2_send_cmd [2016/12/09 16:54]
billdozor [Worker Script File]
linux_wiki:command_many_systems_part2_send_cmd [2017/01/24 22:24]
billdozor [Main Script File]
Line 58: Line 58:
 # Name: send-cmd.sh # Name: send-cmd.sh
 # Description: Execute a command(s) on the specified system(s) # Description: Execute a command(s) on the specified system(s)
-# Last Updated: 2016-12-09 +# Last Updated: 2016-12-20 
-# Recent Changes:-Added worker argument and return code for ssh commands; newline+# Recent Changes:-Added interactive mode (-i) 
 +#                -Added worker argument and return code for ssh commands; newline
 #                 after output; color to return code #                 after output; color to return code
-#                -Added verbose output argument option, default to no 
 #################################################################################### ####################################################################################
  
Line 106: Line 106:
   echo -e "\nOTHER OPTIONS"   echo -e "\nOTHER OPTIONS"
   echo -e "-h                    => Display usage."   echo -e "-h                    => Display usage."
 +  echo -e "-i                    => Interactive mode.(Default: Non-interactive)"
   echo -e "-p                    => Send commands in parallel."   echo -e "-p                    => Send commands in parallel."
   echo -e "-w num                => Set the max workers for parallel mode (default:${max_workers})"   echo -e "-w num                => Set the max workers for parallel mode (default:${max_workers})"
Line 122: Line 123:
  
 ## Default settings ## ## Default settings ##
 +# Non-interactive by default
 +interactive_mode="no"
 +
 # Do not send to all systems by default # Do not send to all systems by default
 all_systems="no" all_systems="no"
Line 132: Line 136:
  
 ## Get command line arguments ## ## Get command line arguments ##
-while getopts "hs:g:ac:pw:v" opt; do+while getopts "his:g:ac:pw:v" opt; do
   case "${opt}" in   case "${opt}" in
     h) # -h (help) argument     h) # -h (help) argument
       show_usage       show_usage
       exit 0       exit 0
 +    ;;
 +    i) # -i (interactive) argument
 +      interactive_mode="yes"
     ;;     ;;
     s) # -s system     s) # -s system
Line 210: Line 217:
   show_usage   show_usage
   exit 1   exit 1
 +fi
 +
 +# Parallel Send and Interactive Mode set: Issue warning
 +if [[ ${parallel_cmds} == "yes" && ${interactive_mode} == "yes" ]]; then
 +  echo -e "\n>> WARNING: Interactive mode (-i) ignored due to parallel send mode (-p).\n"
 +  interactive_mode="no"
 fi fi
  
Line 309: Line 322:
     # Serial Execution     # Serial Execution
     for node in $(echo ${system_name}); do     for node in $(echo ${system_name}); do
-      output="$(ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}")" + 
-      return_code=$(echo $?) +      # Non-interactive (default) 
-      case "${return_code}" in +      if [[ ${interactive_mode} != "yes" ]]; then 
-        0) # 0 return code - show green return code +        output="$(ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}")" 
-          echo -e "-> ${node} (${color_green}retcode=${return_code}${color_end})\n${output}\n" +        return_code=$(echo $?) 
-        ;; +        case "${return_code}" in 
-       1) # 1 return code  - show red return code +          0) # 0 return code - show green return code 
-          echo -e "-> ${node} (${color_red}retcode=${return_code}${color_end})\n${output}\n" +            echo -e "-> ${node} (${color_green}retcode=${return_code}${color_end})\n${output}\n" 
-        ;; +          ;; 
-       *) # any other return code  - show yellow return code +          1) # 1 return code  - show red return code 
-          echo -e "-> ${node} (${color_yellow}retcode=${return_code}${color_end})\n${output}\n" +            echo -e "-> ${node} (${color_red}retcode=${return_code}${color_end})\n${output}\n" 
-        ;; +          ;; 
-      esac+          *) # any other return code  - show yellow return code 
 +            echo -e "-> ${node} (${color_yellow}retcode=${return_code}${color_end})\n${output}\n" 
 +          ;; 
 +        esac 
 + 
 +      else 
 +        # Interactive mode set 
 +        echo -e "-> ${node}" 
 +        ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}" 
 +        echo 
 +      fi
     done     done
   fi   fi
Line 356: Line 379:
     # Serial Execution     # Serial Execution
     for node in $(cat ${system_name}); do     for node in $(cat ${system_name}); do
-      output="$(ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}")" + 
-      return_code=$(echo $?) +      # Non-interactive (default) 
-      case "${return_code}" in +      if [[ ${interactive_mode} != "yes" ]]; then 
-        0) # 0 return code - show green return code +        output="$(ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}")" 
-          echo -e "-> ${node} (${color_green}retcode=${return_code}${color_end})\n${output}\n" +        return_code=$(echo $?) 
-        ;; +        case "${return_code}" in 
-       1) # 1 return code  - show red return code +          0) # 0 return code - show green return code 
-          echo -e "-> ${node} (${color_red}retcode=${return_code}${color_end})\n${output}\n" +            echo -e "-> ${node} (${color_green}retcode=${return_code}${color_end})\n${output}\n" 
-        ;; +          ;; 
-       *) # any other return code  - show yellow return code +          1) # 1 return code  - show red return code 
-          echo -e "-> ${node} (${color_yellow}retcode=${return_code}${color_end})\n${output}\n" +            echo -e "-> ${node} (${color_red}retcode=${return_code}${color_end})\n${output}\n" 
-        ;; +          ;; 
-      esac+          *) # any other return code  - show yellow return code 
 +            echo -e "-> ${node} (${color_yellow}retcode=${return_code}${color_end})\n${output}\n" 
 +          ;; 
 +        esac 
 + 
 +      else 
 +        # Interactive mode set 
 +        echo -e "-> ${node}" 
 +        ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}" 
 +        echo 
 +      fi
     done     done
   fi   fi
Line 410: Line 443:
     # Serial Execution     # Serial Execution
     for node in $(${spacecmd_cmd} group_listsystems ${system_group}); do     for node in $(${spacecmd_cmd} group_listsystems ${system_group}); do
-      output="$(ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}")" + 
-      return_code=$(echo $?) +      # Non-interactive (default) 
-      case "${return_code}" in +      if [[ ${interactive_mode} != "yes" ]]; then 
-        0) # 0 return code - show green return code +        output="$(ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}")" 
-          echo -e "-> ${node} (${color_green}retcode=${return_code}${color_end})\n${output}\n" +        return_code=$(echo $?) 
-        ;; +        case "${return_code}" in 
-       1) # 1 return code  - show red return code +          0) # 0 return code - show green return code 
-          echo -e "-> ${node} (${color_red}retcode=${return_code}${color_end})\n${output}\n" +            echo -e "-> ${node} (${color_green}retcode=${return_code}${color_end})\n${output}\n" 
-        ;; +          ;; 
-       *) # any other return code  - show yellow return code +          1) # 1 return code  - show red return code 
-          echo -e "-> ${node} (${color_yellow}retcode=${return_code}${color_end})\n${output}\n" +            echo -e "-> ${node} (${color_red}retcode=${return_code}${color_end})\n${output}\n" 
-        ;; +          ;; 
-      esac+          *) # any other return code  - show yellow return code 
 +            echo -e "-> ${node} (${color_yellow}retcode=${return_code}${color_end})\n${output}\n" 
 +          ;; 
 +        esac 
 + 
 +      else 
 +        # Interactive mode set 
 +        echo -e "-> ${node}" 
 +        ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}" 
 +        echo 
 +      fi
     done     done
   fi   fi
Line 457: Line 500:
     # Serial Execution     # Serial Execution
     for node in $(${spacecmd_cmd} system_list); do      for node in $(${spacecmd_cmd} system_list); do 
-      output="$(ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}")" +      # Non-interactive (default) 
-      return_code=$(echo $?) +      if [[ ${interactive_mode} != "yes" ]]; then 
-      case "${return_code}" in +        output="$(ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}")" 
-        0) # 0 return code - show green return code +        return_code=$(echo $?) 
-          echo -e "-> ${node} (${color_green}retcode=${return_code}${color_end})\n${output}\n" +        case "${return_code}" in 
-        ;; +          0) # 0 return code - show green return code 
-       1) # 1 return code  - show red return code +            echo -e "-> ${node} (${color_green}retcode=${return_code}${color_end})\n${output}\n" 
-          echo -e "-> ${node} (${color_red}retcode=${return_code}${color_end})\n${output}\n" +          ;; 
-        ;; +          1) # 1 return code  - show red return code 
-       *) # any other return code  - show yellow return code +            echo -e "-> ${node} (${color_red}retcode=${return_code}${color_end})\n${output}\n" 
-          echo -e "-> ${node} (${color_yellow}retcode=${return_code}${color_end})\n${output}\n" +          ;; 
-        ;; +          *) # any other return code  - show yellow return code 
-      esac+            echo -e "-> ${node} (${color_yellow}retcode=${return_code}${color_end})\n${output}\n" 
 +          ;; 
 +        esac 
 + 
 +      else 
 +        # Interactive mode set 
 +        echo -e "-> ${node}" 
 +        ssh -qt -o ConnectTimeout=5 ${node} "${send_cmd}" 
 +        echo 
 +      fi
     done     done
   fi   fi
  • linux_wiki/command_many_systems_part2_send_cmd.txt
  • Last modified: 2019/05/25 23:50
  • (external edit)