if grep n8r /proc/cmdline > /dev/null 2>&1; then stty crtscts fi for x in 0 1 2 3 4 5 6 7 8 do mknod /dev/vcs$x c 7 $x mknod /dev/vcsa$x c 7 $[$x+128] done chmod 644 /dev/vcs* chown root /dev/vcs* cat >/tmp/foo.py <<EOF #!/usr/bin/python import socket import os import linecache import re sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('#XCATVAR:XCATMASTER#',#TABLE:site:key=xcatiport:value#)) response = sock.recv(100) if(response == "ready\n"): sock.send("installmonitor\n") response = sock.recv(100) sock.close() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) port = 3001 sock.bind(('', port)) sock.listen(5) try: while 1: newSocket, address = sock.accept() while 1: received = newSocket.recv(200) if not received: break command = re.split('\s+',received) if(command[0] == "stat"): ilog = "" firstline = "" line = "" post = 0 percent = 0 count = 0 numpack = 0 if(os.path.isfile('/mnt/sysimage/root/install.log')): ilog = '/mnt/sysimage/root/install.log' if(os.path.isfile('/mnt/sysimage/tmp/install.log')): ilog = '/mnt/sysimage/tmp/install.log' if(os.path.isfile('/mnt/sysimage/root/post.log')): ilog = '/mnt/sysimage/root/post.log' post = 1 if(ilog): count = len(open(ilog).readlines()) firstline = linecache.getline(ilog,1) line = linecache.getline(ilog,count) linecache.clearcache() if(line and not post): r1 = re.compile("^Installing (\d+) ") m1 = r1.search(firstline) if m1: numpack = int(m1.group(1)) if(numpack > 0): percent = int(((count - 2) * 100)/numpack + .5) if(percent > 100): percent = 100 if(percent < 0): percent = 0 r2 = re.compile("^Installing (.*)\.") m2 = r2.search(line) if m2: newline = m2.group(1) newline = newline + " (" newline = newline + str(percent) newline = newline + "%)" # newline = newline + " [" # count = count - 2 # newline = newline + str(count) # newline = newline + "/" # newline = newline + str(numpack) # newline = newline + "]" else: newline = "prep" line = "installing " + newline if(line and post): line = "installing " + line if(not line): line = "installing prep" newSocket.send(line) break # if(command[0] == "sh"): #DEBUG purposes only, wide open root priv command here. # newcommand = "" # for i in command[1:]: # newcommand = newcommand + i + " " # output = os.popen(newcommand).read() # newSocket.send(output) # break if(command[0] == "screendump"): newcommand = "cat /dev/vcs" for i in command[1:]: newcommand = newcommand + i output = os.popen(newcommand).read() newSocket.send(output) break newSocket.close() finally: sock.close() EOF chmod 755 /tmp/foo.py /tmp/foo.py >/foo.log 2>&1 &