X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plc.d%2Ffunctions;h=e2e128cde8c909fda91231640a78c37d9aa2df25;hb=e8f9d455fe3dbff172b144b0e2edcf400ce9c52d;hp=71aaf3f48725c54c054544b6ddf42e6de011acac;hpb=00486e6f391586f05c8439ab2f8986f106b0535c;p=myplc.git diff --git a/plc.d/functions b/plc.d/functions index 71aaf3f..e2e128c 100644 --- a/plc.d/functions +++ b/plc.d/functions @@ -1,23 +1,18 @@ # -*-Shell-script-*- +# $Id$ +# $URL$ # # Common functions for PLC startup/shutdown scripts # # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: functions,v 1.2 2006/04/07 04:27:56 mlhuang Exp $ -# export PATH=/sbin:/bin:/usr/bin:/usr/sbin # Source function library . /etc/init.d/functions -# Source configuration if it exists -if [ -f /etc/planetlab/plc_config ] ; then - . /etc/planetlab/plc_config -fi - # Total number of errors ERRORS=0 @@ -61,7 +56,16 @@ plc_daemon () [ -n "${pid:-}" -a -z "${force:-}" ] && return # And start it up. - (exec -a plc_${base} $*) + # Thierry -- June 18 2007 + # when invoking, e.g. service plc start httpd from an ssh connection + # ssh stupidly hangs when everything is done + # it turns out the forked ssh daemon exhibits the following stack at that point + # (gdb) where + # #0 0x001d6402 in __kernel_vsyscall () + # #1 0x003c2e7d in ___newselect_nocancel () from /lib/libc.so.6 + # #2 0x004387b4 in main () from /usr/sbin/sshd + # So I figured the various file descriptors used were not properly closed + (exec 3>&- 4>&- ; exec -a plc_${base} $*) ret=$? if [ -f /var/run/${base}.pid ] ; then @@ -74,14 +78,7 @@ plc_daemon () # Print IP address of hostname if resolvable gethostbyname () { - perl -MSocket -e '($a,$b,$c,$d,@addrs) = gethostbyname($ARGV[0]); print inet_ntoa($addrs[0]) . "\n";' $1 2>/dev/null -} - -# Print the CNAME of an SSL certificate -ssl_cname () -{ - openssl x509 -noout -in $1 -subject | \ - sed -n -e 's@.*/CN=\([^/]*\).*@\1@p' + python -c 'import socket; import sys; print socket.gethostbyname(sys.argv[1])' $1 2>/dev/null } # Forcefully make a symlink @@ -92,7 +89,27 @@ symlink () ln -s $1 $2 } +# Argument(s) or stdin to lowercase stdout +lower () +{ + if [ ${#*} -ge 1 ] ; then + tr A-Z a-z <<<$* + else + tr A-Z a-z + fi +} + +# Argument(s) or stdin to uppercase stdout +upper () +{ + if [ ${#*} -ge 1 ] ; then + tr a-z A-Z <<<$* + else + tr a-z A-Z + fi +} + # Make copies of stdout and stderr. The plc initscript redirects # stdout and stderr to a logfile if -v is not specified. -[ ! -e /dev/fd/3 ] && exec 3>&1 -[ ! -e /dev/fd/4 ] && exec 4>&2 +[ ! -e /proc/self/fd/3 ] && exec 3>&1 +[ ! -e /proc/self/fd/4 ] && exec 4>&2