2016-07-22 23 views
1

Ich versuche, einen Dienst über ssh in einem Bash-Skript zu starten, die ich gerade von der Kommandozeile aus aufrufen. Ich kann die folgenden Befehle tun: (Ich habe SSH-Schlüssel am Platz, so brauche ich nicht ap setzen/w in)bash script start service über ssh

ssh -t -t [email protected] 'sudo /sbin/service test stop' - Adaequat, beendet den Dienst

ssh -t -t [email protected] 'sudo /sbin/service test status' - Adaequat, Status ist der Service

ssh -t -t [email protected] 'sudo /sbin/service test start' - Startet nicht den Service ???

Dies ist mit einem benutzerdefinierten Skript init.d

Hat jemand irgendwelche Ideen auf CentOS 6.7

läuft?

oder sehen, was ich vermisse?

Danke!

EDIT: Hier ist der init.d-Skript:

#!/bin/bash 
# 
### BEGIN INIT INFO 
# Provides:   test 
# Required-Start: networking 
# Required-Stop:  networking 
# Default-Start:  3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: 
### END INIT INFO 
# 

###source function library 
source /etc/init.d/functions 

APPNAME="test" 
APPDIR="/tmp" 
CONFIGDIR="/tmp/config" 
LOCKFILE=/var/lock/subsys/$APPNAME 
PIDFILE="/var/run/$APPNAME.pid" 

###Declare variables for test 
CONFIG="test.config" 

start() { 
    echo -n "Starting $APPNAME: " 
    source "${CONFIGDIR}/source.txt" 
    daemon --pidfile="$PIDFILE" "/tmp/${APPNAME} ${CONFIGDIR}/${CONFIG} >> /tmp/console.log 2>&1 &" 
    RETVAL=$? 
    [ $RETVAL -eq 0 ] && { 
      touch $LOCKFILE 
      pidof $APPNAME > $PIDFILE 
    } 
    return $RETVAL 
} 

stop() { 
    echo -n $"Stopping $APPNAME:" 
    killproc -p "$PIDFILE" $APPNAME 
    RETVAL=$? 
    echo 
    [ $RETVAL -eq 0 ] && rm -f $LOCKFILE $PIDFILE 
    return $RETVAL 
} 

case "$1" in 
    start) 
      start 
      ;; 
    stop) 
      stop 
      ;; 
    status) 
      status -p "$PIDFILE" "$APPNAME" 
      ;; 
    restart) 
      stop 
      start 
      ;; 
    *) 
      echo "Usage $prg {start|stop|status|restart}" 
      exit 1 
      ;; 
esac 
exit $RETVAL 
+0

Könnten Sie das benutzerdefinierte 'init.d'-Skript einschließen? – StephenG

+0

Was ist "benutzerdefinierte init.d"? – Jakuje

+0

@StephenG hinzugefügt – georges

Antwort

0

ich eine Arbeit um gefunden:

ssh -t -t [email protected] 'sudo bash -s' < '/tmp/start_test.sh' 

und dann auf dem Server:

/tmp/start_test.sh

#!/bin/bash 

sudo service test start >> /tmp/start.log 

exit 0 
0

Ich habe dieses getestet erfolgreich:

echo "sudo service test start && exit" | python -c 'import pty, sys; pty.spawn(sys.argv[1:])' ssh [email protected]