Converting Automator Action in applescript to bash script 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" &amp; " ftp 2&gt;&amp;1 | grep  \"Escape character is\" &gt; /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" &amp; character id 8233 &amp; character id 8233 &amp; character id 8233 &amp; "Address: ftp://" &amp; ipaddr &amp; ":21" &amp; character id 8233 &amp; "User Name: " &amp; 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:


Check if FTP server is running
If yes, turn it off and throw a message box saying "FTP session closed"
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?
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+)/ &amp;&amp; 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\" &amp; character id 8233 &amp; character id 8233 &amp; character id 8233 &amp; \"Address: ftp://\" &amp; \"$IPADDR\" &amp; \":21\" &amp; character id 8233 &amp; \"User Name: \" &amp; \"$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.