Вывод оболочки в Applescript - PullRequest
0 голосов
/ 19 ноября 2011

Мне было интересно, как извлечь только определенные данные из вывода команды оболочки в Applescript. Я хочу иметь возможность передавать IP-адрес в переменную только из команды "ping -o", например:

   do shell script "ping -o " & blockedURL

    -- Set the IP to blockedIP -- 

    set blockedIP to ..

но я получаю это:

"PING example.com (192.0.43.10): 56 байтов данных 64 байта из 192.0.43.10: icmp_seq = 0 ttl = 239 раз = 101,587 мс

--- статистика пинга example.com --- 1 переданных пакетов, 1 полученных пакетов, 0,0% потерь пакетов туда и обратно min / avg / max / stddev = 101,587 / 101,587 / 101,587 / 0,000 мс "

Когда я выполняю команду ping, я получаю много данных, которые мне не нужны. Можно ли как-то вспомнить (192.0.43.10)?

1 Ответ

4 голосов
/ 19 ноября 2011
set a to "PING example.com (192.0.43.10): 56 data bytes 64 bytes from 192.0.43.10: icmp_seq=0 ttl=239 time=101.587 ms

--- example.com ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 101.587/101.587/101.587/0.000 ms"

set text item delimiters to "("
set temp to text item 2 of a
set text item delimiters to ")"
set temp to first text item of temp
return temp

Выше приведено полное решение appleScript. Вы также можете использовать следующее, чтобы получить IP, просто используя оболочку ping -o www.google.com | cut -d'(' -f2|cut -d')' -f1 | head -n1, поэтому в applecript это будет выглядеть так: do shell script "ping -o " & blockedURL & " | cut -d'(' -f2 | cut -d')' -f1 | head -n1"

...