Multiple Choice SSH Script

Hey guys, hope someone here can help as I dont know where to look.

Im trying to create a script to give me a dialog to choose which raspberry pi i want to connect to but for the life of me i cant figure out what im doing wrong.
Im only just starting learning to code, so forgive me if its blatantly obvious but here is my code up to now…


on ActivateTerminal()
	tell application "Terminal"
		activate
		do script command
	end tell
end ActivateTerminal

on SetChoice()
	set choice to choose from list {"RPi 1", "RPi 2", "RPi 4", "RPi 5", "RPi 6", "Server"}
	if choice is "RPi 1" then
		set logon to "root"
		set sshhost to "192.168.0.200"
	end if
	if choice is "RPi 2" then
		set logon to "root"
		set sshhost to "192.168.1.2"
	end if
	set command to "ssh " & logon & "@" & sshhost
end SetChoice

on run
	SetChoice()
	ActivateTerminal()
end run

Whenever i run it, it just says “variable logon not defined”

Cheers in advance

choose from list {“RPi 1”, “RPi 2”, “RPi 4”, “RPi 5”, “RPi 6”, “Server”}
will return a list. (i.e. {“RPi 1”} not a string such as “RPi 1”)

you need to change this line to

set choice to item 1 of (choose from list {"RPi 1", "RPi 2", "RPi 4", "RPi 5", "RPi 6", "Server"})

or coerce to text like this

set choice to (choose from list {"RPi 1", "RPi 2", "RPi 4", "RPi 5", "RPi 6", "Server"}) as text

Thank you for your response robertfern, but substituting your line into the script results in the same error…

Ok so substituting your line into the script and simplifying it has made it work, thanks again.


set choice to item 1 of (choose from list {"RPi 1", "RPi 2", "RPi 4", "RPi 5", "RPi 6", "Server"})
if choice is "RPi 1" then
	set logon to "root"
	set sshhost to "192.168.0.200"
end if
if choice is "RPi 2" then
	set logon to "root"
	set sshhost to "192.168.1.2"
end if
set command to "ssh " & logon & "@" & sshhost
tell application "Terminal"
	activate
	do script command
end tell

For anyone whos interested heres the final script…

set logon to "pi"
set choice to item 1 of (choose from list {"RPi 1", "RPi 2", "RPi 3", "RPi 4", "RPi 5", "RPi 6", "Server"})
if choice is "RPi 1" then
	set logon to "root"
	set sshhost to "192.168.0.200"
else if choice is "RPi 2" then
	set logon to "root"
	set sshhost to "192.168.1.2"
else if choice is "RPi 3" then
	set sshhost to "192.168.1.3"
else if choice is "RPi 4" then
	set sshhost to "192.168.1.4"
else if choice is "RPi 5" then
	set sshhost to "192.168.1.5"
else if choice is "RPi 6" then
	set logon to "root"
	set sshhost to "192.168.0.129"
else if choice is "Server" then
	set precommand to "wakeonlan E0:CB:4E:DE:D0:87"
	set logon to "iainstott"
	set sshhost to "192.168.0.110"
end if
set command to "ssh " & logon & "@" & sshhost
tell application "Terminal"
	reopen
	activate
	if choice is "Server" then
		do script precommand in window 1
		delay 5
		do script command in window 1
	else
		do script command in window 1
	end if
end tell

This config file is used for just this purpose. You might want to check it out as well.