mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
#usage:
 | 
						|
#runcmdinstaller: issue command which run in the installer and print the command output
 | 
						|
#runcmdinstaller <node> "<command>"
 | 
						|
 | 
						|
node=$1
 | 
						|
shift
 | 
						|
cmd=$*
 | 
						|
 | 
						|
function print_usage {
 | 
						|
    echo "Usage:"
 | 
						|
    echo "       runcmdinstaller <node> <commands>"
 | 
						|
    echo "       runcmdinstaller [-h] [--help]"        
 | 
						|
    echo "Description:"
 | 
						|
    echo "       A debug tool to run commands inside the os installer of a node"
 | 
						|
    echo "Notice:" 
 | 
						|
    echo "       1. runcmdinstaller is only available against the node provisioned with xcatdebugmode turned on(1 or 2)"
 | 
						|
    echo "       2. <node> can not be multiple nodes or node group"
 | 
						|
    echo "       3. <node> must be the node in 'installing' status"
 | 
						|
    echo "       4. <commands> must be the commads which will return immediately, otherwise, runcmdinstaller will be blocked"
 | 
						|
    echo "       5. runcmdinstaller can not be run concurrently"
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
if [ "$node" = "-h" ] || [ "$node" = "--help" ]; then
 | 
						|
    print_usage
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
if [ -z "$node" ] || [ -z "$cmd" ];then
 | 
						|
   print_usage 
 | 
						|
   exit 1
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
XCATDEBUGMODE=$(lsdef -t site -o clustersite -i xcatdebugmode 2>/dev/null | grep "xcatdebugmode="|cut -d= -f2) 
 | 
						|
if [[ -z "$XCATDEBUGMODE" || "$XCATDEBUGMODE" == "0" ]];then
 | 
						|
    echo "Warning:"
 | 
						|
    echo "      The xcatdebugmode is disabled"
 | 
						|
    echo "      runcmdinstaller is only available against the node provisioned with xcatdebugmode enabled(
 | 
						|
1 or 2)" 
 | 
						|
else
 | 
						|
    NSupdate=$(lsdef -t site -o clustersite -i nodestatus 2>/dev/null | grep "nodestatus="|cut -d= -f2) 
 | 
						|
    nodestatus=$(lsdef $node -i status 2>/dev/null | grep "status="|cut -d= -f2)
 | 
						|
    
 | 
						|
    if [[ "$NSupdate" != "n" && "$NSupdate" != "N" &&  "$NSupdate" != "0" && "$nodestatus" != "installing" ]];then
 | 
						|
        echo "Warning:"
 | 
						|
        echo "      The node status update is enabled and the 'nodestatus' of $node is $nodestatus"
 | 
						|
        echo "      runcmdinstaller can only be run against the node in 'installing' status!"
 | 
						|
    fi
 | 
						|
fi 
 | 
						|
 | 
						|
type -p nc >/dev/null 2>&1
 | 
						|
retcode=$?
 | 
						|
if [ "$retcode" != "0" ];then
 | 
						|
    echo "Error:"
 | 
						|
    echo "nc(netcat) is not installed, please install it first!"
 | 
						|
    exit $retcode
 | 
						|
fi
 | 
						|
 | 
						|
echo "sh $cmd 2>&1" | nc -w 20 $node 3001 
 | 
						|
 |