Verificar el estado de FTP usando AppleScript

1

Tengo una aplicación AppleScript Automator que, al hacer doble clic, abre FTP y muestra una alerta que confirma lo mismo. Está funcionando perfectamente como se esperaba. Sin embargo, busco que sea un poco más intuitivo para que abra FTP SOLAMENTE si FTP no está abierto. Si FTP ya está abierto en mi sistema, la aplicación debería cerrarlo.

Entonces, básicamente, quiero usar la aplicación como un interruptor que abre o cierra FTP dependiendo de su estado actual. El código que estoy usando actualmente para abrir FTP y mostrar la alerta es el siguiente:

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

¿Alguien me puede indicar la dirección correcta? ¿Hay alguna variable del sistema que pueda usarse para recuperar el estado del FTP? En la Terminal, podría usar esto:

ftp localhost

Y los resultados me dirían si está abierto o cerrado. Pero, ¿cómo puedo dejar que AppleScript sepa lo mismo?

Información adicional: Salida de " ftp localhost " en la Terminal

Este es el resultado de ftp localhost cuando FTP está cerrado:

YaquíestáelresultadocuandoFTPestáabierto:

Aquí, acabo de presionar retorno sin ninguna entrada y luego da esto:

    
pregunta TheLearner 10.05.2014 - 22:01

1 respuesta

2

Esto funciona como una prueba de shell, si reemplaza con su objetivo.

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

Apenas estamos utilizando herramientas complejas, solo enviamos un comando al servidor que hace que cierre nuestra conexión. Si esto funciona, el servidor ftp está en funcionamiento. Si no pudimos conectarnos, esta línea devuelve 1 , de lo contrario, devuelve 0 .

Digerido a un AppleScript es algo como

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
    
respondido por el Max Ried 10.05.2014 - 22:42

Lea otras preguntas en las etiquetas