Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24

    CREARE ED ESEGUIRE UN VBScipt IN TCL

    Ciao a Tutti/e

    ho creato uno script TCL che gira in windows, che ad un certo punto deve creare ed eseguire un VBScript per l'inivo automatico di una mail

    L'invio della mail automatica e' legato al funzionamento corretto di alcuni ftp fatto su diverse macchine/server window e linux

    Ecco la parte di codice incriminato..

    codice:
    proc ftpfile {} {
    global colorbg uf sw sf dd etsn verini
    
    
    set etsn [string toupper $verini]
    
    
    $uf.nm.fr.en_tsn delete 0 end
    $uf.nm.fr.en_tsn insert 0 $etsn
    
    
    set valx [string length $etsn]
    
    
    
    
    if { $valx == 5 } {
    
    
    set newfile [tk_getOpenFile -title "SELECT FILEs TO BE TRANSFERRED" -initialfile Untitled -filetypes {{"All files needed" *.xls} {"All files needed" *.xlsx} {"All files needed" *.XLS} {"All files needed" *.XLSX} {"All files needed" *.txt} {"All files needed" *.pdf} {"All Files" *}} -multiple true]
    
    
    if { $newfile != "" && $etsn != "" } {
    
    
    set mymailfile [open "[set name mailfile.vbs]" w]
    
    
    puts $mymailfile {set WshShell = WScript.CreateObject("WScript.Shell")}
    
    
    puts $mymailfile {Set argv = WScript.Arguments}
    
    
    puts $mymailfile {Dim argDir,argv}
     puts $mymailfile {Dim argFile}
    
    
    
    
    puts $mymailfile {argDir=argv(0)}
    puts $mymailfile {argFile=argv(1)}
    
    
    
    
    
    
    puts $mymailfile {WshShell.Run "cmd"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.AppActivate "C:\Windows\system32\cmd.exe"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "telnet servername.com 25~"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "helo xx.com~"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "mail from: PAGINAWEB@xx.com~"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "rcpt to: indirizzomail~"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "rcpt to: indirizzomail~"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "data~"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "subject: TRANSFERRED FILE NOTIFICATION  " & argDir}
     
    puts $mymailfile {WshShell.SendKeys "~"}
    
    
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "Hello to all,~"}
    puts $mymailfile {WshShell.SendKeys "~"}
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "All selected file " }
    puts $mymailfile {WshShell.SendKeys "~"}
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys " FILES " & argFile}
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "~"}
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "has been succesfully transferred on WEB page~"}
    puts $mymailfile {WshShell.SendKeys "~"} 
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "Link http:xxxxxx.ASP Directory " & argDir}
    puts $mymailfile {WshShell.SendKeys "~"}
    puts $mymailfile {WshShell.SendKeys "~"}
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "Best regards~"}
    puts $mymailfile {WshShell.SendKeys "~"}
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys "AG8/AGM RA & WFR TEAM~"}
    puts $mymailfile {WshShell.SendKeys "~"}
    puts $mymailfile {WshShell.SendKeys "~"}
    puts $mymailfile {WScript.Sleep 5}
    
    
    puts $mymailfile {WshShell.SendKeys " ** This email is automatically generated , don't reply to it ** ~"}
    
    
    puts $mymailfile {WScript.Sleep 100}
    
    
    puts $mymailfile {WshShell.SendKeys ".~"}
    
    
    puts $mymailfile {WScript.Sleep 100}
    
    
    puts $mymailfile {WshShell.SendKeys "quit~"}
    
    
    puts $mymailfile {WScript.Sleep 100}
    puts $mymailfile {WshShell.SendKeys "     exit~"}
    
    
    
    
    close $mymailfile
    
    
    
    
    foreach filename $newfile {
    
    
    
    
    set conn2 [ftp::Open server.com user password -progress Progress -mode passive]
    ### set myfile2 [open "[set name prova3.txt]" w]
                  ftp::Cd $conn2 DIRECTORY
                  ftp::MkDir $conn2 $etsn
                  ftp::Cd $conn2 $etsn
                  
    foreach line2 [ftp::Put $conn2 $filename] {
    
    
    if { $line2 == 0 } {
    tk_dialog $uf.msg "ERROR" "All selected files CANNOT be copied on XXX unix area !!" error 0 ok
    
    
           } else {
    
    
               }
           }
    ftp::Close $conn2
    
    
    #### exec cmd.exe /C del prova3.txt
    
    
    
    
    set conn3 [ftp::Open servername user password -progress Progress -mode passive]
                  ftp::Cd $conn3 DIRECORY
                  ftp::Get $conn3 file.asp
    ftp::Close $conn3
    
    
    
    
    set conn5 [ftp::Open servername user password -progress Progress -mode passive]
    ### set myfile2 [open "[set name prova3.txt]" w]
                  ftp::Cd $conn5 DIRECTORY
                  ftp::MkDir $conn5 $etsn
                  ftp::Cd $conn5 $etsn
                  
    foreach line5 [ftp::Put $conn5 $filename] {
    
    
    if { $line5 == 0 } {
    tk_dialog $uf.msg "ERROR" "All selected files CANNOT be copied on XXXX unix area !!" error 0 ok
    
    
           } else {
    
    
               }
              ## close $myfile2
           }
    ftp::Close $conn5
    
    
    
    
    
    
    set conn4 [ftp::Open servername user password -progress Progress -mode passive]
    # set myfile4 [open "[set name prova33.txt]" a]
                  ftp::Cd $conn4 DIRECTORY
                  ftp::MkDir $conn4 $etsn
                  ftp::Cd $conn4 $etsn
                  
    foreach line4 [ftp::Put $conn4 $filename] {
    
    
           if { $line4 == 0 } {
    tk_dialog $uf.msg "ERROR" "All selected files CANNOT be copied on WEB page!!" error 0 ok
    
    
    if {![file exists "mailfile.vbs "]} {} else {exec cmd.exe /C del mailfile.vbs} 
    
    
           } else {
    
    
                 ftp::Put $conn4 file.asp
                 exec cmd.exe /C del file.asp
    
    
    
    
    
    
           }
             ##    puts $myfile4 "$line4"
               }
              ## close $myfile4
    ftp::Close $conn4
    
    
    
    
    ### exec cmd.exe /C del prova33.txt
    
    
    }
    
    
    
    
    
    
    
    
    
    
    if { $line4 != 0 } {
    tk_dialog $uf.msg "INFO" "All selected files have been succesfully transferred" info 0 ok
    
    
    
    
    exec cmd.exe /C mailfile.vbs $etsn $newfile
    
    
    
    
    # if {![file exists "mailfile.vbs "]} {} else {exec cmd.exe /C mailfile.vbs $etsn $filename ; exec cmd.exe /C del mailfile.vbs} 
    
    
    }
    
    
    destroy .
    } else {
    
    
    $uf.nm.fr.en_tsn delete 0 end
    if {![file exists "mailfile.vbs "]} {} else {exec cmd.exe /C del mailfile.vbs}
    
    
    }
    
    
    } else {
    tk_dialog $uf.msg "ERROR" "THE NAME MUST HAVE 5 DIGIT!!" error 0 ok
    
    
    if {![file exists "mailfile.vbs "]} {} else {exec cmd.exe /C del mailfile.vbs} 
    
    
    $uf.nm.fr.en_tsn delete 0 end
    } 
    
    
    
    
    }
    Il mio problema e' nella definizione della variabile argFile, dato che vorrei passarla come argomento in fase di esecuzione del VBScript scritto mailfile.vbs
    Come indicato nello script TCL, la varibile "newfile" puo' essere un solo file, oppure piu' di uno, ma la procedura va in errore

    Grazie a tutti per il supporto

    Ciao
    Ultima modifica di MItaly; 09-03-2016 a 23:59 Motivo: Tag CODE

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    Questi di seguito sono il messagio di errore


    2016-03-09_181852.jpg

    e lo script VBS creato
    codice:
    set WshShell = WScript.CreateObject("WScript.Shell")
    Set argv = WScript.Arguments
    Dim argDir,argv
    Dim argFile
    argDir=argv(0)
    argFile=argv(1)
    WshShell.Run "cmd"
    WScript.Sleep 5
    WshShell.AppActivate "C:\Windows\system32\cmd.exe"
    WScript.Sleep 5
    WshShell.SendKeys "telnet servername 25~"
    WScript.Sleep 5
    WshShell.SendKeys "helo xx.com~"
    WScript.Sleep 5
    WshShell.SendKeys "mail from: PAGINAWEB@xx.com~"
    WScript.Sleep 5
    WshShell.SendKeys "rcpt to: indirizzomail~"
    WScript.Sleep 5
    WshShell.SendKeys "rcpt to: indirizzomail~"
    WScript.Sleep 5
    WshShell.SendKeys "data~"
    WScript.Sleep 5
    WshShell.SendKeys "subject: TRANSFERRED FILE NOTIFICATION  " & argDir
    WshShell.SendKeys "~"
    WScript.Sleep 5
    WshShell.SendKeys "Hello to all,~"
    WshShell.SendKeys "~"
    WScript.Sleep 5
    WshShell.SendKeys "All selected file " 
    WshShell.SendKeys "~"
    WScript.Sleep 5
    WshShell.SendKeys " FILES " & argFile
    WshShell.SendKeys "~"
    WScript.Sleep 5
    WshShell.SendKeys "has been succesfully transferred on WEB page~"
    WshShell.SendKeys "~"
    WScript.Sleep 5
    WshShell.SendKeys "Link http://xxx.ASP Directory " & argDir
    WshShell.SendKeys "~"
    WshShell.SendKeys "~"
    WScript.Sleep 5
    WshShell.SendKeys "Best regards~"
    WshShell.SendKeys "~"
    WScript.Sleep 5
    WshShell.SendKeys "LUCKY~"
    WshShell.SendKeys "~"
    WshShell.SendKeys "~"
    WScript.Sleep 5
    WshShell.SendKeys " ** This email is automatically generated , don't reply to it ** ~"
    WScript.Sleep 100
    WshShell.SendKeys ".~"
    WScript.Sleep 100
    WshShell.SendKeys "quit~"
    WScript.Sleep 100
    WshShell.SendKeys "     exit~"
    Immagini allegate Immagini allegate
    Ultima modifica di MItaly; 09-03-2016 a 23:59

  3. #3
    Al di là del problema specifico, mi sembra che la procedura che stai usando per inviare la mail sia delirante... generi al volo uno script VBScript che simula la pressione di tasti dentro un telnet lanciato da TCL? Senza cattiveria, ma cambia spacciatore...

    Non so nulla di TCL, ma con una mezza ricerca su Google si trova subito che è disponibile un modulo SMTP (qui la documentazione completa). Ma se anche non fosse, piuttosto che simulare pressioni di tasti qualunque altra soluzione è meglio, un'altra possibilità può essere preparare il messaggio in un file e poi chiamare un programma come Blat per spedirlo.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    Grazie mille Mitaly, per i consigli.
    Sto provando ad utilizzare Blat eseguendo il comando:

    blat.exe" "testomail.txt" -to indirizzomail@xx.com -subject "NOTIFICATION " -server xxxxxxxxxx -f mittente@xx.com

    Scrivendolo nel prompt di dos, funziona tutto correttamente ma se provo ad inserirlo nello script tcl, come:

    exec cmd.exe blat.exe" "testomail.txt" -to indirizzomail@xx.com -subject "NOTIFICATION " -server xxxxxxxxxx -f mittente@xx.com

    non arriva nessuna mail e non ricevo nessun messaggio di errore.

    Sbaglio qualcosa nel eseguire il comando dallo script?

    Grazie in anticipo

  5. #5
    Per far eseguire un comando a cmd.exe si usa l'opzione /c, ma non ti serve... Se devi lanciare blat lancia blat, non serve tirare in ballo cmd...

    (ma in ogni caso, la soluzione corretta sarebbe usare il modulo mail... Hai provato?)
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    Grazie ancora!! Ora il comando blat funziona correttamente...

    Ho fatto qualche prova con il modulo SMTP, ma non riesco ad installarlo.
    Nel senso che non ho i permessi per potere installare pacchetti aggiuntivi e questo non e' presente IN ACTIVE TCL 8.6.1.0 che ho io nel PC.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.