1 votos

Servicio Automator para FTP

Actualmente estoy utilizando SFTP en mi MacBook para realizar transferencias de archivos con el sistema Linux (Ubuntu) de mi hermano. Cada vez que necesitamos compartir un archivo, inicio el servidor FTP en mi Mac ejecutando el siguiente comando en Terminal:

/Users/Amit/Documents/Scriptlets/ftps.sh open

El contenido de este guión es el siguiente:

#!/bin/sh
if [ $1 = 'open' ]; then
sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
echo SFTP opened
fi
if [ $1 = 'close' ]; then
sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist
echo SFTP closed
fi
if [ $1 = 'check' ]; then
ftp localhost
echo check
fi

Una vez hecho esto, le doy mi dirección IP local, mi nombre de usuario y mi contraseña a mi hermano, que ya está conectado a mi Mac por wifi, y él utiliza esa información para establecer una conexión FTP conmigo y compartir archivos.

El problema con este proceso es que tengo que abrir Terminal cada vez que quiero ejecutar este comando y tengo que introducir mi contraseña allí. ¿Hay alguna forma de automatizar esto de manera que sólo tenga que hacer clic en un elemento de menú de Automator en cualquiera de mis ventanas de Finder y darle la contraseña de forma programada sin tener que abrir manualmente el programa Terminal? Además, ¿hay alguna manera de asegurar que mi hermano (o cualquier persona a la que le proporcione mi nombre de usuario y contraseña) pueda acceder sólo a una carpeta designada (preferiblemente, la carpeta pública) durante la sesión FTP y nada más?

Esto es lo que preferiría hacer cada vez que tenga que compartir un archivo con alguien: Me gustaría poder hacer clic en un icono (de Automator) en mi barra de menú del buscador para activar el FTP en mi sistema. Al hacer clic, la acción de Automator debería abrir el servidor FTP en mi portátil (la contraseña se introduce a través del propio código) y lanzar una ventana emergente confirmando que la conexión está activa con la dirección IP que necesito transmitir a mi hermano para que pueda intentar conectarse. Una vez realizada la transferencia de archivos, me gustaría volver a pulsar sobre el mismo icono y que me saliera un popup confirmando que el FTP se ha cerrado. ¿Es un proceso demasiado complicado?

1voto

chillin Puntos 1997

¿Por qué usar Automator cuando puedes quedarte en bash?

Encontré un pequeño y genial script llamado apuntar a que convertirá instantáneamente otros scripts en aplicaciones reales. Puedes probarlo unas cuantas veces para observar su comportamiento. Como ya usas bash, espero que esta respuesta como alternativa a lo que pides exactamente sea aceptable. 

La idea es dividir tu script en 3 distintos:


1: iniciar el servicio ftp sólo en la interfaz de red preferida

 #!/bin/bash
 #start ftp service
 #sudo="/usr/bin/sudo"
 #launchctl="/bin/launchctl"
 say="/usr/bin/say"
 networksetup="/usr/sbin/networksetup"
 tail="/usr/bin/tail"
 head="/usr/bin/head"
 cut="/usr/bin/cut"
 curl="/usr/bin/curl"
 currentInterface=$(networksetup -listnetworkserviceorder |tail +2 |head -n1 |cut -c5-12)
 getExternaladdress=$(curl ipecho.net/plain)
 SiriSays="say -v Samantha"
 #sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist 
 #your command will start ftp on all network interfaces
 if [ "$currentInterface" = "Airport" ]; 
      then
           networksetup -setpassiveftp Airport on
      else
           networksetup --setpassiveftp Ethernet on
 fi
 $SiriSays "ftp service has been initiated for the"
 echo $currentInterface |$SiriSays; $SiriSays "interface"
 $SiriSays "Your external IP address is"
 echo $getExternaladdress | $SiriSays
 exit

2: detener el servicio ftp

 #!/bin/bash
 #stop ftp service
 #sudo="/usr/bin/sudo"
 #launchctl="/bin/launchctl"
 networksetup="/usr/sbin/networksetup"
 say="/usr/bin/say"
 tail="/usr/bin/tail"
 head="/usr/bin/head"
 cut="/usr/bin/cut"
 currentInterface=$(networksetup -listnetworkserviceorder |tail +2 |head -n1 |cut -c5-12)
 SiriSays="say -v Samantha"
 #sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist
 #your command requires sudo
 if [ "$currentInterface" = "Airport" ]; 
      then
           networksetup -setpassiveftp Airport off
      else
           networksetup -setpassiveftp Ethernet off
 fi
 $SiriSays "ftp service has been terminated"
 exit

3: comprobar el estado del servicio ftp

 #!/bin/bash
 #check ftp service status
 networksetup="/usr/sbin/networksetup"
 say="/usr/bin/say"
 tail="/usr/bin/tail"
 head="/usr/bin/head"
 cut="/usr/bin/cut"
 currentInterface=$(networksetup -listnetworkserviceorder |tail +2 |head -n1 |cut -c5-12)
 SiriSays="say -v Samantha"
 if [ "$currentInterface" = "Airport" ]; 
      then
           networksetup -getpassiveftp Airport |$SiriSays
      else
           networksetup -getpassiveftp Ethernet |$SiriSays
 fi
 exit

A continuación, aplique el apuntar a script a ellos

Lo que te queda son tres pequeñas aplicaciones para poner en tu dock que, cuando se ejecutan, iniciarán o detendrán el servicio ftp en tu interfaz de red preferida, o te dirán qué pasa con el ftp, respectivamente, y no deberían requerir ninguna contraseña de administrador. Sólo tuve tiempo de probar la primera, así que si no funcionan como espero, puedes comentar o eliminar mi lógica y usar tu método launchctl.


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