Come ottenere un valore da una lista con una stringa in AppleScript?

1

Quello che cerco di ottenere è che la finestra di dialogo debba restituire l'indirizzo IP presente nell'elenco.

set ipList to {DNS1:"8.8.8.8", DNS2:"8.8.4.4"}
set input to "DNS1"
set output to input of ipList
display dialog output

dà un errore: errore "input di {DNS1: \" 8.8.8.8 \ ", DNS2: \" 8.8.4.4 \ "} kan niet worden opgevraagd." numero -1728 dall'input di {DNS1: "8.8.8.8", DNS2: "8.8 .4.4" }

Se lo faccio:

set output to DNS1 of ipList

funziona, quindi suppongo che dovrei fare qualcosa con input variabili.

Ho cercato su Google per un po 'di tempo ma non riesco a trovare un suggerimento. Sono abbastanza sicuro che la risposta sia già da qualche parte qui ma non riesco a trovarlo. Scusa per quella cosa.

UPDATE : Penso di aver posto la domanda in modo sbagliato.

Lasciami riprovare, ho una lista:

set ipList to {DNS1:"8.8.8.8", DNS2:"8.8.4.4"}

Vorrei scorrere gli articoli. Così hai codificato con meno codice:

set IP_address to "8.8.8.8"
try
    set ping to do shell script ("ping -c 2 " & IP_address & "| head -2 | tail -1 |cut -d = -f 4")
    if ping contains "ms" then
        set Output1 to "DNS 1 UP"
    else if ping contains "timeout" then
        set Output1 to "DNS 1 DOWN"
    end if
end try
set IP_address to "8.8.4.4"
try
    set ping to do shell script ("ping -c 2 " & IP_address & "| head -2 | tail -1 |cut -d = -f 4")
    if ping contains "ms" then
        set Output2 to "DNS 1 UP"
    else if ping contains "timeout" then
        set Output2 to "DNS 1 DOWN"
    end if
end try

display dialog (Output1 & return & Output2) buttons {"OK"} default button 1 with title "Resultaat"

Ancora una volta, sono un principiante, mi dispiace

    
posta Johan Kuiper 31.12.2014 - 12:58
fonte

2 risposte

2

Questa sarebbe la mia opinione su questo:

set ipList to {"8.8.8.8", "8.8.8.6", "8.8.4.4"}
set Output1 to ""
set Output2 to ""
global Output1, Output2
repeat with i from 1 to number of items in ipList
    set this_item to item i of ipList
    my ipCheck(this_item, i)
end repeat


if Output1 is not "" or Output2 is not "" then
    display dialog (Output1 & Output2) buttons {"OK"} default button 1 with title "Resultaat"
end if

on ipCheck(IP_address, i)
    try
        set ping to do shell script ("ping -c 2 " & IP_address & "| head -2 | tail -1 |cut -d = -f 4")
        if ping contains "ms" then
            set Output1 to Output1 & return & "DNS" & i & "  UP"
        else if ping contains "timeout" then
            set Output2 to Output2 & return & "DNS" & i & " DOWN"
        end if
    end try
end ipCheck

    
risposta data 31.12.2014 - 17:49
fonte
0

Devi chiedere l''elemento' [record] a cui fa riferimento l''etichetta' elenco '[proprietà record]
L'etichetta [proprietà record] è DNS1, l'elemento [record] è la stringa "8.8.8.8"

set ipList to {DNS1:"8.8.8.8", DNS2:"8.8.4.4"}
set input to DNS1 of ipList
set output to input
display dialog output

Puoi facilmente abbinarlo a

set ipList to {DNS1:"8.8.8.8", DNS2:"8.8.4.4"}
display dialog DNS1 of ipList

Anche se immagino sia parte di una costruzione più grande

Modifica: btw, non puoi estrarre un record dal suo indice. Funziona solo per gli elenchi senza proprietà predefinite: strutture di record.

Modifica 2 dopo la modifica della domanda.

Prova qualcosa del genere ...

--debug only, to save actually doing the ping, swap to test
--set ping to "ms"
set ping to "timeout"

global ipList
global resultsList
global theString
set ipList to {"8.8.8.8", "8.8.4.4"}
set resultsList to {}
set theString to ""

repeat with IP_address in ipList
    --set ping to do shell script ("ping -c 2 " & IP_address & "| head -2 | tail -1 |cut -d = -f 4")
    if ping contains "ms" then
        set the end of resultsList to IP_address & " UP"
    else if ping contains "timeout" then
        set the end of resultsList to IP_address & " DOWN"
    end if
end repeat

--build dialog
repeat with theReturn in resultsList
    set theString to theString & (theReturn & return)
end repeat
display dialog (theString) buttons {"OK"} default button 1 with title "Resultaat"

NOTA: Non sono abituato a lavorare su Applescript. Tratta globals & gente del posto in modo diverso da quello a cui sono abituato, quindi le mie dichiarazioni in cima potrebbero essere esagerate, ma funzionano in questo modo.

    
risposta data 31.12.2014 - 13:21
fonte

Leggi altre domande sui tag