Vérifier l'état du FTP en utilisant AppleScript

1

J'ai une application AppleScript Automator qui, lorsque vous double-cliquez dessus, ouvre FTP et affiche une alerte confirmant la même chose. Cela fonctionne parfaitement comme prévu. Cependant, je cherche à le rendre un peu plus intuitif afin qu’il n’ouvre le FTP UNIQUEMENT que si ce dernier n’est pas déjà ouvert. Si FTP est déjà ouvert sur mon système, l'application doit le fermer.

Donc, fondamentalement, je veux utiliser l'application comme un commutateur à bascule qui ouvre ou ferme FTP en fonction de son statut actuel. Le code que j'utilise actuellement pour ouvrir FTP et afficher l'alerte est le suivant:

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

Est-ce que quelqu'un pourrait me diriger dans la bonne direction? Existe-t-il une variable système pouvant être utilisée pour extraire le statut FTP? Sur Terminal, je pourrais utiliser ceci:

ftp localhost

Et les résultats me diraient si c'est ouvert ou fermé. Mais comment puis-je informer AppleScript de la même chose?

Informations supplémentaires: Sortie de " ftp localhost " sur le terminal

Voici le résultat de ftp localhost quand FTP est fermé:

entrez la description de l'image ici

Et voici le résultat lorsque FTP est ouvert:

entrez la description de l'image ici

Ici, je tape juste sur Entrée sans aucune entrée et ensuite cela donne ceci:

entrez la description de l'image ici

TheLearner
la source
1
Pourriez-vous inclure ce qui ftp localhostrevient exactement s'il est activé / désactivé dans votre question?
grg
"Open" signifie "Le port FTP est ouvert / Le serveur FTP est en cours d'exécution et accepte les connexions" Je suppose?
nohillside
@patrix: oui vous avez bien compris.
TheLearner
@grgarside Veuillez voir les captures d'écran ajoutées à la question.
TheLearner
2
OK, il passe en mode interactif. Ce n'est pas pratique si vous voulez le script.
Max Ried

Réponses:

2

Cela fonctionne comme un test de shell si vous remplacez par votre cible.

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

Nous utilisons à peine des outils complexes, nous envoyons simplement une commande au serveur qui lui permet de fermer notre connexion. Si cela fonctionne, le serveur ftp est opérationnel. Si nous ne pouvons pas nous connecter du tout, cette ligne revient 1, sinon elle retourne 0.

Digéré sur un AppleScript c'est quelque chose comme

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
Max Ried
la source
1
Essayez de courir echo $?après.
Max Ried
1
Il n'est pas censé produire une sortie, il définit simplement l'état de sortie sur 0 ou 1. Vous pouvez l'utiliser echo $?pour l'afficher
nohillside
1
Essayez de l'exécuter dans l'éditeur AppleScript. Peut-être automariste.
Max Ried
1
Avez-vous remplacé <hôte>?
Max Ried
1
Ok ... je l'ai testé uniquement sur des serveurs distants.
Max Ried