zeroblue2005
Goto Top

Batch will start Anweisung nicht ausführen

Hallo Zusammen,

ich brauche mal Hilfe. Ich habe hier die Batch vom Programm ApcUPS die eine USV steuert! Das ist die Controll.bat mit folgendem Block!

:doshutdown
@echo on
start c:\plink.exe -ssh -pw 1234 -2 root@192.168.177.16 "sleep 2m && /sbin/shutdown.sh && /sbin/poweroff"
start c:\plink.exe -ssh -pw 1234 -2 root@192.168.177.15 "sleep 2m && /sbin/shutdown.sh && /sbin/poweroff"
GOTO :done

Meine Frage warum führt er nur die Anweisung start Plink in zeile zwei aus und überspringt die erste Zeile Start? Ich habe die erste Zeile auch mal ersetzt gegen ein: start C:\system32\calc.exe

Aber hier überspringt er auch diese start Zeile für den Rechner, dass muss doch ein logischen Grund haben oder?


Die Ganze Batch hier:

@echo on
setlocal

rem
rem This is the Windows apccontrol file.
rem

rem Assign parameters to named variables
SET command=%1
SET sbindir=%5

rem Strip leading and trailing quotation marks from paths.
rem This is easily accomplished on NT, but Win95/98/ME
rem require an evil little trick with 'FOR'.
SET sbindir=%sbindir:"=%
IF "%sbindir%" == "" FOR %%A IN (%5) DO SET sbindir=%%A

rem Paths to important executables
SET APCUPSD="%sbindir%\apcupsd"
SET SHUTDOWN="%sbindir%\shutdown"
SET BACKGROUND="%sbindir%\background"

rem Only do popups on Win95/98/ME/NT. All other platforms support
rem balloon notifications which are provided by apctray.
SET POPUP=echo
VER | FIND /I "Windows 95" > NUL
IF NOT ERRORLEVEL 1 SET POPUP=%BACKGROUND% "%sbindir%\popup"
VER | FIND /I "Windows 98" > NUL
IF NOT ERRORLEVEL 1 SET POPUP=%BACKGROUND% "%sbindir%\popup"
VER | FIND /I "Windows ME" > NUL
IF NOT ERRORLEVEL 1 SET POPUP=%BACKGROUND% "%sbindir%\popup"
VER | FIND /I "Windows NT" > NUL
IF NOT ERRORLEVEL 1 SET POPUP=%BACKGROUND% "%sbindir%\popup"

rem
rem This piece is to substitute the default behaviour with your own script,
rem perl, C program, etc.
rem
rem You can customize any command by creating an executable file (may be a
rem script or a compiled program) and naming it the same as the %1 parameter
rem passed by apcupsd to this script. We will accept files with any extension
rem included in PATHEXT (*.exe, *.bat, *.cmd, etc).
rem
rem After executing your script, apccontrol continues with the default action.
rem If you do not want apccontrol to continue, exit your script with exit
rem code 99. E.g. "exit /b 99".
rem
rem WARNING: please be aware that if you add any commands before the shutdown
rem in the downshutdown) case and your command errors or stalls, it will
rem prevent your machine from being shutdown, so test, test, test to
rem make sure it works correctly.
rem
rem The apccontrol.bat file will be replaced every time apcupsd is installed,
rem so do NOT make event modifications in this file. Instead, override the
rem event actions using event scripts as described above.
rem

rem Use CALL here because event script might be a batch file itself
CALL ".\%command%" 2> NUL

rem This is retarded. "IF ERRORLEVEL 99" means greater-than-or-
rem equal-to 99, so we have to synthesize an == using two IFs.
rem Ahh, the glory of Windows batch programming. At least they
rem gave us a NOT op.
IF NOT ERRORLEVEL 99 GOTO :events
IF NOT ERRORLEVEL 100 GOTO :done

:events

rem
rem powerout, onbattery, offbattery, mainsback events occur
rem in that order.
rem

IF "%command%" == "commfailure" GOTO :commfailure
IF "%command%" == "commok" GOTO :commok
IF "%command%" == "powerout" GOTO :powerout
IF "%command%" == "onbattery" GOTO :onbattery
IF "%command%" == "offbattery" GOTO :offbattery
IF "%command%" == "mainsback" GOTO :mainsback
IF "%command%" == "failing" GOTO :failing
IF "%command%" == "timeout" GOTO :timeout
IF "%command%" == "loadlimit" GOTO :loadlimit
IF "%command%" == "runlimit" GOTO :runlimit
IF "%command%" == "doshutdown" GOTO :doshutdown
IF "%command%" == "annoyme" GOTO :annoyme
IF "%command%" == "emergency" GOTO :emergency
IF "%command%" == "changeme" GOTO :changeme
IF "%command%" == "remotedown" GOTO :remotedown
IF "%command%" == "startselftest" GOTO :startselftest
IF "%command%" == "endselftest" GOTO :endselftest
IF "%command%" == "battdetach" GOTO :battdetach
IF "%command%" == "battattach" GOTO :battattach

echo Unknown command '%command%'
echo.
echo Usage: %0 command
echo.
echo Warning: this script is intended to be launched by
echo apcupsd and should never be launched by users.
GOTO :done

:commfailure
%POPUP% "Communications with UPS lost."
GOTO :done

:commok
%POPUP% "Communciations with UPS restored."
GOTO :done

:powerout
GOTO :done

:onbattery
%POPUP% "Power failure. Running on UPS batteries."
GOTO :done

:offbattery
%POPUP% "Power has returned. No longer running on UPS batteries."
GOTO :done

:mainsback
GOTO :done

:failing
%POPUP% "UPS battery power exhausted. Doing shutdown."
GOTO :done

:timeout
%POPUP% "UPS battery runtime limit exceeded. Doing shutdown."
GOTO :done

:loadlimit
%POPUP% "UPS battery discharge limit reached. Doing shutdown."
GOTO :done

:runlimit
%POPUP% "UPS battery runtime percent reached. Doing shutdown."
GOTO :done

:doshutdown
rem
rem If you want to try to power down your UPS, uncomment
rem out the following lines, but be warned that if the
rem following shutdown -h now doesn't work, you may find
rem the power being shut off to a running computer face-sad
rem Also note, we do this in the doshutdown case, because
rem there is no way to get control when the machine is
rem shutdown to call this script with --killpower. As
rem a consequence, we do both killpower and shutdown
rem here.
rem Note that Win32 lacks a portable way to delay for a
rem given time, so we use the trick of pinging a
rem non-existent IP address with a given timeout.
rem
rem %APCUPSD% /kill
rem ping -n 1 -w 5000 10.255.255.254 > NUL
rem %POPUP% "Doing %APCUPSD% --killpower"
rem %APCUPSD% --killpower
rem ping -n 1 -w 12000 10.255.255.254 > NUL
rem
rem %SHUTDOWN% -h now
@echo on
start C:\shutdown-esxi-IV.rdp
start c:\plink.exe -ssh -pw 1234 -2 root@192.168.177.15 "sleep 2m && /sbin/shutdown.sh && /sbin/poweroff"
GOTO :done

:annoyme
%POPUP% "Power problems: please logoff."
GOTO :done

:emergency
%POPUP% "Emergency shutdown initiated."
GOTO :done

:changeme
%POPUP% "Emergency! UPS batteries have failed: Change them NOW"
GOTO :done

:remotedown
%POPUP% "Shutdown due to master state or comms lost."
GOTO :done

:startselftest
%POPUP% "Self-test starting"
GOTO :done

:endselftest
%POPUP% "Self-test completed"
GOTO :done

:battdetach
%POPUP% "Battery disconnected"
GOTO :done

:battattach
%POPUP% "Battery reattached"
GOTO :done

:done
rem That's all, folks
pause

Content-Key: 288238

Url: https://administrator.de/contentid/288238

Printed on: April 23, 2024 at 08:04 o'clock

Member: Endoro
Endoro Nov 13, 2015 at 04:26:31 (UTC)
Goto Top
Hey,
versuch es mal so:
start "" c:\plink.exe -ssh -pw 1234 -2 root@192.168.177.16 "sleep 2m && /sbin/shutdown.sh && /sbin/poweroff"  
Siehe auch start /?
Gruß, Endoro
Member: zeroblue2005
zeroblue2005 Nov 13, 2015 at 14:55:35 (UTC)
Goto Top
Was hat der Titel "" mit meinem Problem zu tun, habe es gemacht und auch /? gelesen, aber Sinn macht das jetzt nicht unbedingt für mich!
Mitglied: 114757
114757 Nov 13, 2015 updated at 15:23:31 (UTC)
Goto Top
Moin.
Was hat der Titel "" mit meinem Problem zu tun,
Weil ohne manche Aufrufe nicht funktionieren.

Aber ich würde beiden Befehlen mal testweise den Parameter WAIT mitgeben.

Meine Frage warum führt er nur die Anweisung start Plink in zeile zwei aus und überspringt die erste Zeile Start? Ich habe die erste Zeile auch mal ersetzt gegen ein: start C:\system32\calc.exe
Kann ich hier testweise leider nicht nachvollziehen.
Wie lautet die Fehlermeldung ?

Gruß jodel32
Member: Endoro
Endoro Nov 13, 2015 at 17:13:20 (UTC)
Goto Top
Hey,
tut mir leid, dass es für dich "keinen Sinn macht".
Gruß, Endoro
Member: zeroblue2005
zeroblue2005 Nov 14, 2015 at 14:02:25 (UTC)
Goto Top
Auch Hey,

das brauch dir "Nicht Leid zu tun"

Gruß Mike
Member: zeroblue2005
zeroblue2005 Nov 14, 2015 at 14:05:44 (UTC)
Goto Top
Hi Jodel32,

klappt auch nicht ich denke der Grund steckt im oberen teil der Batch, die Batch wird ja vollkommen unsichtbar ausgeführt! Irgendwas verhindert, das GUI bezogene Objekte angezeigt wird und weitere START... nicht angezeigt werden!

Ich habe es jetzt erstmal aufgegeben, da ich die USV für produktiv Einsatz brauche!

Irgendwann gehe ich da noch mal dran!

Danke trotzdem für die "Hilfe"
Member: zeroblue2005
zeroblue2005 Nov 16, 2015 updated at 09:36:32 (UTC)
Goto Top
Habe das Problem jetzt so gelöst:

Habe einfach am Anfang der Batch, also... vor dem ECHO und setlocal die Startfunktion eingeführt und siehe an jetzt klappt es face-smile

start C:\123.exe
echo on
setlocal