0 votos

Convertir la acción de Automator en applescript a bash script

Acabo de escribir una aplicación de Automator utilizando AppleScript (junto con un par de líneas de bash) para iniciar el FTP con un solo clic. Sin embargo, se ejecuta más que un poco lento. Aquí está el código:

set ftpstatus to "off"
try
    do shell script "echo \"QUIT\" | telnet 127.0.0.1" & " ftp 2>&1 | grep  \"Escape character is\" > /dev/null"
    set ftpstatus to "on"
on error
    set ftpstatus to "off"
end try
if (ftpstatus = "off") then
    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 & character id 8233 & "Address: ftp://" & ipaddr & ":21" & character id 8233 & "User Name: " & sun
else
    do shell script "sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges
    tell application "Finder" to display alert "FTP session closed"
end if

Esto es lo que hace el código:

  1. Comprobar si el servidor FTP está funcionando
  2. Si es así, desactívalo y lanza un cuadro de mensaje diciendo "Sesión FTP cerrada"
  3. Si no, enciéndelo y lanza un cuadro de mensaje diciendo "Sesión FTP abierta" junto con mi dirección IP y nombre de usuario

Este script funciona a las mil maravillas pero como es demasiado lento, me pregunto si hay alguna forma de convertirlo en un script de bash shell. Eso debería acelerar mucho las cosas. ¿Alguna sugerencia?

2voto

hjdm Puntos 18

No estoy seguro de haber entendido bien - si en la tercera línea de su script está comprobando si ftp El servicio se está ejecutando Puede utilizar el siguiente script:

#!/bin/bash                                                                                                                   

launchctl list | grep ftpd

if [ $? != 0 ]; then
    IPADDR=$(ifconfig -a | perl -nle'/(\d+\.\d+\.\d+\.\d+)/ && print $1' | grep -v 127.0.0.1)
    launchctl load "/System/Library/LaunchDaemons/ftp.plist"
    osascript -e "tell application \"Finder\" to display alert \"FTP Launched and ready for file-transfer\" & character id 8233 & character id 8233 & character id 8233 & \"Address: ftp://\" & \"$IPADDR\" & \":21\" & character id 8233 & \"User Name: \" & \"$USER\""
else
    launchctl unload -w "/System/Library/LaunchDaemons/ftp.plist"
    osascript -e 'tell application "Finder" to display alert "FTP session closed"'
fi

Ejecutar este a sudo . Explicación:

  • Para comprobar si el trabajo se está ejecutando utilice launchctl list .
  • Para obtener la dirección ip rápidamente utilice mi perl script (Puede querer grep de manera diferente para deshacerse de las direcciones IP adicionales.
  • El único problema ahora es que Buscador La aplicación no es llevada al frente pero esto puede ser resuelto si es necesario.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X