none
problema con esecuzione comando schedulato RRS feed

  • Domanda

  • ciao a tutti,
    ho un problema con un comando schedulato (.bat) che dovrebbe inviare una mail.
    Se provo a eseguire il comando a mano entrando come administrator funziona senza problemi.
    Se lo schedulo, dicendogli di eseguirlo con utente administrator si ferma dopo la prima riga (il lancio di telnet) e alla fine va in time out.
    Non conosco la differenza tra un comando lanciato in console e uno schedulato e mi piacerebbe capire meglio.
    Il comando che dovrei eseguire è:

    start C:\Windows\System32\telnet.exe 192.168.5.3 25
    C:\Windows\System32\cscript.exe c:\postaok.vbs

    all'interno di postaok.vbs c'è:

    set OBJECT=WScript.CreateObject("WScript.Shell")
    WScript.sleep 3000 
    OBJECT.SendKeys "helo server{ENTER}" 
    WScript.sleep 3000 
    OBJECT.SendKeys "MAIL FROM:<administrator@pippo.it>{ENTER}" 
    WScript.sleep 3000 
    OBJECT.SendKeys "RCPT TO:<topolino@pippo.it>{ENTER}" 
    WScript.sleep 3000 
    OBJECT.SendKeys "DATA{ENTER}" 
    WScript.sleep 100 
    OBJECT.SendKeys "From: administrator@pippo.it{ENTER}" 
    WScript.sleep 100 
    OBJECT.SendKeys "TO: topolino@pippo.it{ENTER}" 
    WScript.sleep 100 
    OBJECT.SendKeys "Subject: Immagine Server1 completata{ENTER}" 
    WScript.sleep 100 
    OBJECT.SendKeys "{ENTER}" 
    WScript.sleep 100 
    OBJECT.SendKeys "Immagine di backup di windows del Server1 completato senza errori{ENTER}" 
    WScript.sleep 100 
    OBJECT.SendKeys ".{ENTER}" 
    WScript.sleep 3000 
    OBJECT.SendKeys "quit{ENTER}"
    WScript.sleep 3000 
    OBJECT.SendKeys "{ENTER}"

    Saluti e grazie.
    Sergio


    Sergio Basso

    domenica 22 dicembre 2013 18:06

Risposte

  •  Qui trovi cosa è cambiato riguardo la "sessione 0" dove ora  "girano" servizi e task schedulati

    http://msdn.microsoft.com/it-it/windows/hardware/gg463353.aspx


    Questo è un batch pianificato il 2 gennaio 2014, dovrà spegnere tre server e deve riuscirci sono a sciare!!

    @ECHO off
    ::spegnitutti.cmd
    :: by Gastone Canali title=%~n0 setlocal set path=c:\admin;c:\admin\bin;%path% set filename=%~n0
    :: deve esistere il folder c:\admin\log per funzionare set logfile="c:\admin\log\_%filename%.a.txt" set accodaLOG=^>^> %logfile% 2^>^&1 set path=%0\..;%path% echo -avvio-------------------------------------- %date% %time% %accodaLOG% :: mi sposto in c:\admin\bin
    cd /d c:\admin\bin ( shutdown /s /f /t 200 /c "spegnimento effettuato da %username%! shutdown /a per interrompere" /m \\eco shutdown /s /f /t 400 /c "spegnimento effettuato da %username%! shutdown /a per interrompere" /m \\zeus shutdown /s /f /t 600 /c "spegnimento effettuato da %username%! shutdown /a per interrompere" /m \\io ) %accodaLOG% echo -fine------------------------------------- %date% %time% %accodaLOG% goto :_END :_ERR echo ERROR %0 %accodaLOG% :_END

    Questo è il batch che utilizzano i miei task schedulati per la segnalazione degli errori via mail

    @echo off
    :: send-alert.cmd
    :: usa blat.exe posizionato c:\admin\bin
    :: crea due log in c:\admin\log  _blat.log e _sendalert.log
    :: sintassi
    :: send-alert.cmd
    ::   oppure invio con allegato
    :: send-alert.cmd "c:\mio\percorso\errori.txt"
    :: By Gastone Canali - 2010_2013
    :: ok con 2000/xp/2003/2008/2012
    setlocal
    set path=c:\admin;c:\admin\bin;%path%
    set filename=%~n0
    :: necessita del folder c:\admin\log
    set logfile="c:\admin\log\_%filename%.txt"
    set accodaLOG=^>^> %logfile% 2^>^&1
    
    
    :: 
    :::::::::::::: Lets set some variables ::::::::::::::
    set eMail="mail@inviata.da.it"
    set mailTo=gastone.canali@arma.it
    set subj=-s "Alert: %computername% errori.  "
    set server=-server 10.0.0.0
    set x=-x "X-Header-Test: Funziona... non ci posso credere! ciao da Gastone "
    set debug=-debug -log c:\admin\log\_blat.log -timestamp 
    set BODY=-body "Mail autogenerata il %date% %time%.   Gastone Canali"
    if exist "%~1" (
         set attach=-attach "%~1" 
    ) else (
         set attach=%body%
    )
        

    Grazie e auguri anche a te di Buon Natale




    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    • Proposto come risposta GastoneCanaliModerator lunedì 23 dicembre 2013 10:29
    • Contrassegnato come risposta bassos venerdì 27 dicembre 2013 19:16
    lunedì 23 dicembre 2013 10:29
    Moderatore

Tutte le risposte

  • Avevo scritto nel lontano 2007 su expert-exchange.com  due script che ora riporto, il primo è stato modificato per le tue esigenze il secondo è quello originale (serviva per un router cisco)

    In questi anni sono cambiate un po' di cose e se il tuo sistema operativo è > di 2003 il sendkey non funziona più se schedulato (lunga storia sulla sessione 0), mentre il metodo con netcat dovrebbe andare.

    Anche se penso che per inviare una mail ci siano metodi migliori  potresti usare un eseguibile dedicato (blat.exe) o qualche oggetto com richiamato da vbscript (CDO, CDOSYS,CDONT) o con powershell .

    Io ultimamente uso blat o ps ho abbandonato vbscript e il telnet lo uso solo "a mano" quando devo fare delle prove di invio mail

    1)batch usando netcat (lo trovi joncraton.org/blog/46/netcat-for-windows/ ) schedulando il seguente comando

    c:\admin\vaidimail.cmd | c:\admin\nc.exe -t 92.168.5.3  25

    :: start batch vaidimail.cmd
    @echo off
    setlocal
    set wait=@ping -n 2 localhost 2^>nul 1^>nul
    echo helo server
    %wait%
    echo MAIL FROM:^<administrator@pippo.it^>
    %wait%
    echo RCPT TO:^<topolino@pippo.it^>
    %wait%
    echo DATA
    %wait%
    echo subject: Immagine Server1 completata
    %wait%
    echo Immagine di backup di windows del Server1 completato senza errori
    echo ciaoooo
    %wait%
    echo .
    %wait%
    echo quit
    %wait% :: *** end batch ena-int.cmd

     Vbscript sicuramente non funzionante se schedulato su win 2008 o so più recenti

    ' *** ena-int.vbs
    dim WSHShell
    Set WSHShell = CreateObject("WScript.Shell")
    WSHShell.Run "Telnet.exe",3
    WSHShell.AppActivate "Telnet"
    WScript.Sleep 1000
    WSHShell.SendKeys "o~"
    WScript.Sleep 1000
    WSHShell.SendKeys "10.12.x.x~"
    WScript.Sleep 2000
    WSHShell.SendKeys "user"
    WScript.Sleep 1000
    WSHShell.SendKeys "password"
    WScript.Sleep 1000
    WSHShell.SendKeys "config t~"
    WScript.Sleep 1000
    WSHShell.SendKeys "enable~"
    WScript.Sleep 1000
    WSHShell.SendKeys "exit"
    WScript.Sleep 1000
    WSHShell.SendKeys "wr~"
    WScript.Sleep 2000
    WSHShell.SendKeys "quit~"
    ' *** end ena-int.vbs



      ciao

    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere



    domenica 22 dicembre 2013 23:25
    Moderatore
  • Ciao e grazie per la risposta lampo;
    oggi provo con blat.exe e domani posto il risultato.
    Mi manca di capire la differenza tra comando lanciato e schedulazione.
    Mi è già successo, di creare un comando per spegnere 3 server in successione con un file .bat e se lanciato interattivamente funziona, se lanciato dal software del UPS no.
    Saluti, Buon Natale e grazie. Sergio


    Sergio Basso

    lunedì 23 dicembre 2013 08:42
  •  Qui trovi cosa è cambiato riguardo la "sessione 0" dove ora  "girano" servizi e task schedulati

    http://msdn.microsoft.com/it-it/windows/hardware/gg463353.aspx


    Questo è un batch pianificato il 2 gennaio 2014, dovrà spegnere tre server e deve riuscirci sono a sciare!!

    @ECHO off
    ::spegnitutti.cmd
    :: by Gastone Canali title=%~n0 setlocal set path=c:\admin;c:\admin\bin;%path% set filename=%~n0
    :: deve esistere il folder c:\admin\log per funzionare set logfile="c:\admin\log\_%filename%.a.txt" set accodaLOG=^>^> %logfile% 2^>^&1 set path=%0\..;%path% echo -avvio-------------------------------------- %date% %time% %accodaLOG% :: mi sposto in c:\admin\bin
    cd /d c:\admin\bin ( shutdown /s /f /t 200 /c "spegnimento effettuato da %username%! shutdown /a per interrompere" /m \\eco shutdown /s /f /t 400 /c "spegnimento effettuato da %username%! shutdown /a per interrompere" /m \\zeus shutdown /s /f /t 600 /c "spegnimento effettuato da %username%! shutdown /a per interrompere" /m \\io ) %accodaLOG% echo -fine------------------------------------- %date% %time% %accodaLOG% goto :_END :_ERR echo ERROR %0 %accodaLOG% :_END

    Questo è il batch che utilizzano i miei task schedulati per la segnalazione degli errori via mail

    @echo off
    :: send-alert.cmd
    :: usa blat.exe posizionato c:\admin\bin
    :: crea due log in c:\admin\log  _blat.log e _sendalert.log
    :: sintassi
    :: send-alert.cmd
    ::   oppure invio con allegato
    :: send-alert.cmd "c:\mio\percorso\errori.txt"
    :: By Gastone Canali - 2010_2013
    :: ok con 2000/xp/2003/2008/2012
    setlocal
    set path=c:\admin;c:\admin\bin;%path%
    set filename=%~n0
    :: necessita del folder c:\admin\log
    set logfile="c:\admin\log\_%filename%.txt"
    set accodaLOG=^>^> %logfile% 2^>^&1
    
    
    :: 
    :::::::::::::: Lets set some variables ::::::::::::::
    set eMail="mail@inviata.da.it"
    set mailTo=gastone.canali@arma.it
    set subj=-s "Alert: %computername% errori.  "
    set server=-server 10.0.0.0
    set x=-x "X-Header-Test: Funziona... non ci posso credere! ciao da Gastone "
    set debug=-debug -log c:\admin\log\_blat.log -timestamp 
    set BODY=-body "Mail autogenerata il %date% %time%.   Gastone Canali"
    if exist "%~1" (
         set attach=-attach "%~1" 
    ) else (
         set attach=%body%
    )
        

    Grazie e auguri anche a te di Buon Natale




    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    • Proposto come risposta GastoneCanaliModerator lunedì 23 dicembre 2013 10:29
    • Contrassegnato come risposta bassos venerdì 27 dicembre 2013 19:16
    lunedì 23 dicembre 2013 10:29
    Moderatore
  • Ciao,
    ho utilizzato blat.exe e funziona perfettamente.
    Grazie anche del link per la sessione 0 che sto leggendo.
    Buon anno a tutti.
    Sergio


    Sergio Basso

    venerdì 27 dicembre 2013 19:18