Controlla lo stato FTP usando AppleScript

1

Ho un'applicazione AppleScript Automator che, quando fa doppio clic, apre FTP e visualizza un avviso che conferma lo stesso. Funziona perfettamente come previsto. Tuttavia, sto cercando di renderlo un po 'più intuitivo in modo che apra FTP SOLO se FTP non è già aperto. Se FTP è già aperto sul mio sistema, l'app dovrebbe chiuderlo.

Quindi, in sostanza, voglio usare l'app come interruttore a levetta che apre o chiude FTP a seconda del suo stato prevalente. Il codice che sto attualmente utilizzando per aprire FTP e visualizzare l'avviso è il seguente:

set ipaddr to IPv4 address of (get system info)
set sun to short user name of (get system info)
do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges
tell application "Finder" to display alert "FTP Launched and ready for file-transfer" & character id 8233 & character id 8233 & "User Name: " & sun & character id 8233 & "IP address: " & ipaddr

Qualcuno può indicarmi la giusta direzione? C'è una variabile di sistema che può essere utilizzata per recuperare lo stato FTP? Sul terminale, potrei usare questo:

ftp localhost

E i risultati mi direbbero se è aperto o chiuso. Ma come posso far sapere allo stesso AppleScript?

Informazioni aggiuntive: output di " ftp localhost " sul terminale

Ecco il risultato di ftp localhost quando FTP è chiuso:

EdeccoilrisultatoquandoFTPèaperto:

Qui, premo semplicemente return senza input e poi restituisce questo:

    
posta TheLearner 10.05.2014 - 22:01
fonte

1 risposta

2

Funziona come test della shell, se si sostituisce con il target.

echo "QUIT" | telnet <host> ftp 2>&1 | grep  "Escape character is" > /dev/null

Usiamo pochissimi strumenti complessi, semplicemente inviamo un comando al server che fa chiudere la nostra connessione. Se funziona, il server ftp è attivo e funzionante. Se non siamo in grado di connetterci, questa riga restituisce 1 , altrimenti restituisce 0 .

Digestato su un AppleScript è qualcosa come

set hostn to <host>
try
    do shell script "echo \"QUIT\" | telnet " & hostn & " ftp 2>&1 | grep  \"Escape character is\" > /dev/null"
    display dialog "Online."
on error
    display dialog "Not online."
end try
    
risposta data 10.05.2014 - 22:42
fonte

Leggi altre domande sui tag