Convertir la acción del automático en AppleScript para bash script -- applescript campo con automator campo con bash campo con ftp camp apple Relacionados El problema

Converting Automator Action in applescript to bash script


0
vote

problema

Español

Acabo de escribir una aplicación automática con AppleScript (junto con un par de líneas de bash) para iniciar 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. Compruebe si el servidor FTP se está ejecutando
  2. En caso afirmativo, apáguelo y lanza un cuadro de mensaje que dice "Sesión FTP cerrada"
  3. Si no, enciéndalo y lanza un cuadro de mensaje que dice "Sesión FTP abierta" junto con mi dirección IP y nombre de usuario

Este script funciona como el encanto, pero como es demasiado lento, me pregunto si hay alguna forma de convertirla a un script de Shell Bash. Eso debería acelerar mucho las cosas. ¿Alguna sugerencia?

Original en ingles

I just wrote an Automator app using AppleScript (along with a couple of bash lines) to start FTP with a single click. However it runs more than a tad slow. Here's the code:

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 

Here's what the code does:

  1. Check if FTP server is running
  2. If yes, turn it off and throw a message box saying "FTP session closed"
  3. If no, turn it on and throw a message box saying "FTP session open" along with my IP address and username

This script works like charm but since it's too slow, I am wondering if there's any way to convert it to a bash shell script. That should speed up things a lot. Any suggestions?

           

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

No estoy seguro de entender correctamente: si está en la tercera línea de su script que está compruebe si ftp se está ejecutando, puede usar 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   

Ejecute este A ABCDEFGHIJKLMNABCDEFGHIJKLMN8 . Explicación:

  • Para verificar si el trabajo está ejecutando Use ABCDEFGHIJKLMNABCDEFGHIJKLMN9 .
  • Para obtener la dirección IP, use rápidamente mi script Perl (puede querer utility0 de manera diferente para deshacerse de las direcciones IP adicionales.
  • El único problema ahora es que la aplicación buscador no se lleva al frente, pero esto se puede resolver si es necesario.
 

I'm not sure I understand correctly - if in the third line of Your script You're checking whether ftp service is running You can use following 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 

Run this a sudo. Explanation:

  • To check if job is running use launchctl list.
  • To get ip address quickly use my perl script (You may want to grep it differently in order to get rid of additional IP addresses.
  • The only problem now is that Finder app is not brought to front but this can be solved if needed.
 
 
         
         

Relacionados problema

8  Copiar texto formateado desde una página web a un cuadro de diálogo de entrada de AppleScript  ( Copying formatted text from a web page to an applescript input dialog ) 
Tengo un AppleScript que, simplificado, se ve así: ... display dialog "foo" default answer "" ... Uno de los usuarios de este script se ejecuta León. C...

1  ¿Puedo usar AppleScript para ir al final de un documento de texto?  ( Can i use applescript to go to the end of a text document ) 
Tengo una pregunta muy, muy básica: tengo un pequeño archivo AppleScript que limpia las etiquetas HTML en un documento de TextWrangler. En la última parada, m...

0  Sistema de AppleScript Eventos Keystroke roto después de 10.9.4  ( Applescript system events keystroke broken after 10 9 4 ) 
Parece que la actualización de Mavericks reciente ha roto el comando de pulsación de pulsaciones en AppleScript, siempre que mi script llegue a ese punto, se ...

2  Script de Apple para bloquear la computadora usando golpe  ( Apple script to lock computer using knock ) 
Hay una gran aplicación llamada golpe que le permite desbloquear su Mac haciendo tapping en su teléfono dos veces mientras está en su teléfono proximidad. ...

2  ¿Cuáles son algunos buenos recursos para aprender a AppleScript con Xcode 4.3.2?  ( What are some good resources for learning how to applescript with xcode 4 3 2 ) 
i Applescript bastante un poco y me gustaría comenzar a trabajar con Xcode 4.3.2, para que pueda ampliar la funcionalidad de las cosas que estoy escribiendo. ...

2  ¿Cómo puedo crear un cuadro de diálogo de entrada de múltiples líneas usando AppleScript?  ( How can i create a multi line input dialog using applescript ) 
¿Cómo puedo crear un cuadro de diálogo de entrada de texto multiline usando AppleScript? La creación de un cuadro de diálogo de una sola línea es simple ... ...

1  AppleScript: Cadena hasta la fecha  ( Applescript string to date ) 
Estoy extrayendo diferentes formatos de fecha de una página web. e.g. Domingo 10 de septiembre de 2017 / 09/10/2017 / 10 de septiembre de 2017. En el eje...

1  Mensajes AppleScript ¿No funciona bajo león de montaña?  ( Messages applescript not working under mountain lion ) 
Intenté agregar un AppleScript para ejecutar un comando específico cuando envío o recibo un mensaje en los mensajes en mi servidor, pero por alguna razón nunc...

0  ¿De dónde vaya el registro de eventos de AppleScript cuando se ejecuta en Lanzamiento?  ( Where does applescript event log go when run under launchd ) 
O, ¿cómo iniciar sesión desde un AppleScript (guardado como aplicación) y / o ver el registro de eventos? Se pueden encontrar ninguna de las declaraciones d...

2  Automático Para ejecutar script shell con un archivo de texto de entrada, cópielo en el directorio específico  ( Automator to execute shell script with an input text file copy it to specific d ) 
Estoy simplificando hacer un archivo .deb con automatista. Actualmente tengo un script de shell que hace algunas acciones simples - Pregunte al usuario de ...

0  Quiero mostrar un archivo en un paquete de AppleScript, pero Shell Devuelve: archivo no encontrado  ( I want to show a file in an applescript bundle but shell returns file not foun ) 
Mi paquete de paquete: ABCDEFGHIJKLMNABCDEFGHIJKLMN2 Mi código: set bashFile to path to resource "reference.txt" set the reference_data to do shell scr...

17  Creando una carpeta comprimida HFS + automatizada  ( Creating an automated hfs compressed folder ) 
Me gustaría configurar una forma automatizada para archivar archivos en OS X Lion. Al archivar, me refiero a usar la función de compresión HFS + en una carpet...

2  Ayuda de Script de correo  ( Mail script help ) 
Reenvío muchos correos electrónicos a Evernote y Nozbe (similar a Omnifocus), ya que trabajo para obtener mi bandeja de entrada a cero. Cuando estoy en mi iPh...

1  Sintaxis de comando de terminal de rizo de AppleScript  ( Curl terminal command syntax from applescript ) 
Quiero ejecutar un comando abcdefghijklmncurl en AppleScript que hace lo siguiente ( por esta pregunta / respuesta ): https://superuser.com/a/1054803/4711...

8  ¿Cuál es la forma más fácil de automatizar el registro en un sitio web?  ( Whats the easiest way to automate logging into a website ) 
Hay este sitio web. Necesito acceder a aproximadamente cada diez minutos. Y aparentemente fue diseñado en 1993, por sátistas. No hay una casilla de verificaci...




© 2021 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos


Licensed under cc by-sa 3.0 with attribution required.