# $Id$
import time
+import os
+import commands
+import pprint
# how could this accept a list again ?
def header(message):
now=time.strftime("%H:%M:%S", time.localtime())
print "*",now,'--',message
+
+def show_spec(message,spec,depth=2):
+ now=time.strftime("%H:%M:%S", time.localtime())
+ print ">",now,"--",message
+ pprint.PrettyPrinter(indent=6,depth=depth).pprint(spec)
+
+def system(command):
+ now=time.strftime("%H:%M:%S", time.localtime())
+ print "+",now,':',command
+ return os.system("set -x; " + command)
+
+# checks whether a given hostname/ip responds to ping
+ping_timeout_option = None
+def check_ping (hostname):
+ # check OS (support for macos)
+ global ping_timeout_option
+ if not ping_timeout_option:
+ (status,osname) = commands.getstatusoutput("uname -s")
+ if status != 0:
+ raise Exception, "Cannot figure your OS name"
+ if osname == "Linux":
+ ping_timeout_option="-w"
+ elif osname == "Darwin":
+ ping_timeout_option="-t"
+
+ command="ping -c 1 %s 1 %s"%(ping_timeout_option,hostname)
+ (status,output) = commands.getstatusoutput(command)
+ return status == 0
+
+# inserts a backslash before each occurence of the following chars
+# \ " ' < > & | ; ( ) $ * ~
+def backslash_shell_specials (command):
+ result=''
+ for char in command:
+ if char in "\\\"'<>&|;()$*~":
+ result +='\\'+char
+ else:
+ result +=char
+ return result
+