Получение информации о сетевых соединениях с использованием скрипта shell

Читай новости Mac911.RU в удобном и популярном формате RSS Условия размещения рекламы на Mac911.RU|iPod911.RU

Хотите быстро получать информацию о своем кабельном (en0) и беспроводном (en1) соединениях без необходимости каждый раз открывать панель Network System Preference? Без проблем! Просто скопируйте нижеприведенный сценарий в любой текстовый редактор и сохраните его как shell-скрипт (например, getnet.sh) где-нибудь в $PATH. Затем убедитесь, что скрипт исполняемый, запустив в Терминале chmod 0755 /path/to/getnet.sh



#! /bin/bash

QUERY0="$(ipconfig getpacket en0)";
QUERY1="$(ipconfig getpacket en1)";
MAC0="$(ifconfig en0 | grep ether | awk '{print $2}')";
MAC1="$(ifconfig en1 | grep ether | awk '{print $2}')";

echo $QUERY0 | grep 'BOOTREPLY' > /dev/null;
ET=$?;

echo $QUERY1 | grep 'BOOTREPLY' > /dev/null;
WI=$?;

echo " ";

if [ $ET -eq 0 ] || [ $WI -eq 0 ]
 then
  PUBLIC="$(curl -s http://checkip.dyndns.org | awk '{print $6}' | awk 'BEGIN {FS = "<"} {print $1}')";   echo "   Public IP: $PUBLIC"; fi; echo "   Hostname: $HOSTNAME"; echo " "; echo "Wired Ethernet (en0)"; echo "-----------------------"; if [ $ET -eq 0 ]  then   echo $QUERY0 | grep 'yiaddr = 0.0.0.0' > /dev/null;
  AT=$?;
  if [ $AT -eq 0 ]
   then
    IP="$(echo $QUERY0 | sed 's/.*ciaddr = \([[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\).*/\1 (Static)/')";
   else
    IP="$(echo $QUERY0 | sed 's/.*yiaddr = \([[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\).*/\1 (DHCP)/')";
  fi;
  SUBNET="$(echo $QUERY0 | sed 's/.*subnet_mask (ip): \([[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\).*/\1/')";
  ROUTER="$(echo $QUERY0 | sed 's/.*router (ip_mult): {\([^}]*\)}.*/\1/')";
  DNS="$(echo $QUERY0 | sed 's/.*domain_name_server (ip_mult): {\([^}]*\)}.*/\1/')";
  SEARCH="$(echo $QUERY0 | sed 's/.*domain_name (string): \(.*\) [[:alpha:]].*/\1/')";
  SPEED="$(ifconfig en0 | grep media: | sed 's/.*(//' | sed 's/ .*//' | sed 's/baseT/ MBit\/s/')";
  echo "  IP Address: $IP";
  echo "  Subnet Mask: $SUBNET";
  echo "    Router: $ROUTER";
  echo "  DNS Server: $DNS";
  echo "Search Domains: $SEARCH";
  echo "  MAC Address: $MAC0";
  echo "     Speed: $SPEED";
elif ! [ $ET -eq 0 ]
 then
  echo "  IP Address: inactive";
  echo "  MAC Address: $MAC0";
fi;

echo " ";
echo "Wireless Ethernet (en1)";
echo "-----------------------";

if [ $WI -eq 0 ]
 then
  echo $QUERY1 | grep 'yiaddr = 0.0.0.0' > /dev/null;
  AT=$?;
  if [ $AT -eq 0 ]
   then
    IP="$(echo $QUERY1 | sed 's/.*ciaddr = \([[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\).*/\1 (Static)/')";
   else
    IP="$(echo $QUERY1 | sed 's/.*yiaddr = \([[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\).*/\1 (DHCP)/')";
  fi;
  SUBNET="$(echo $QUERY1 | sed 's/.*subnet_mask (ip): \([[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\).*/\1/')";
  ROUTER="$(echo $QUERY1 | sed 's/.*router (ip_mult): {\([^}]*\)}.*/\1/')";
  DNS="$(echo $QUERY1 | sed 's/.*domain_name_server (ip_mult): {\([^}]*\)}.*/\1/')";
  SEARCH="$(echo $QUERY1 | sed 's/.*domain_name (string): \(.*\) [[:alpha:]].*/\1/')";
  SPEED="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | grep lastTxRate: | sed 's/.*: //' | sed 's/$/ MBit\/s/')";

Пример вывода данных в результате запуска скрипта:



Public IP: 123.456.78.90
Hostname: CWB-MacBook.local

Wired Ethernet (en0)
-----------------------
IP Address: inactive
MAC Address: aa:bb:cc:dd:ee:ff

Wireless Ethernet (en1)
-----------------------
IP Address: 192.168.0.196 (DHCP)
Subnet Mask: 255.255.255.0
Router: 192.168.0.1
DNS Server: 192.168.0.1
Search Domains: woh.rr.com
MAC Address: 00:11:22:33:44:55
Speed: 117 MBit/s

macosxhints.com (obearsstate)

Далее

AppleScript: дроплет проверки контрольной суммы файла

Читай новости Mac911.RU в удобном и популярном формате RSS Условия размещения рекламы на Mac911.RU|iPod911.RU

Когда качаешь программы всегда есть шанс подхватить зловредный код. Чтобы перестраховаться, можно сверить контрольную сумму (‘SHA1 Checksum’). После изучения огромного множества сайтов, в том числе и Apple Developer, мне удалось создать AppleScript, верифицирующий контрольную сумму ‘NSA Secure Hash Algorithm 1′. Просто скопируйте код в AppleScript Editor и сохраните скрипт как приложение:



-- if applet is double-clicked
set chosenFile to choose file with prompt "Select the file to checksum:"
do shell script "/usr/bin/openssl sha1 " & quoted form of POSIX path of chosenFile
display dialog result buttons {"OK"} default button "OK"

-- or if the file is drag and dropped
on open chosenFile
  do shell script "/usr/bin/openssl sha1" & quoted form of POSIX path of chosenFile
  display dialog result buttons {"OK"} default button "OK"
end open

macosxhints.com

Пользоваться этим «дроплетом» очень просто: перетащите проверяемый файл на в него или же – сначала двойной клик по аплету, а потом перейдите к проверяемому файлу. В обоих случаях результатом будет диалог, отображающий путь к файлу и его контрольную сумму.

Далее

AppleScript: Изменение часового пояса в iPhoto

Читай новости Mac911.RU в удобном и популярном формате RSS Условия размещения рекламы на Mac911.RU|iPod911.RU

Забыл я как-то перевести часы камеры на зимнее время и в моих фотках началась полная неразбериха, они стали сортироваться в неправильном порядке. В iPhone есть функция изменения времени группы фотографий, но она не поможет, так как она сдвигает время, а дату оставляет прежней и вносит еще большую чехарду, поскольку фотографии, сделанные в течение часа после полуночи смешаются на поздний вечер того же дня. Пришлось прибегнуть к AppleScript, который не только меняет время, но и учитывает дату (например, 00:30 1 апреля 2010 г. корректно воспринимается как 23:30 31 марта 2010 г.). Если забыли перевести часы на летнее время, достаточно в параметре wantedDate заменить вычитание 1 часа (3600 секунд) прибавлением. Можно применять для изменения времени фотографий, сделанных в других часовых поясах.



tell application "iPhoto"
  set selPhotos to selection -- create a list out of photos that are selected

  repeat with eachPhoto in my selPhotos -- tell each photo to do something
    tell eachPhoto
      set oldDate to date -- get the date and time of each photo

      set wantedDate to oldDate - (60 * 60) -- remove 3600 seconds from the time

      set date to wantedDate -- set new date to each photo
    end tell
  end repeat
end tell

macosxhints.com

Скопировать скрипт в AppleScript Editor; сохранить под названием на выбор пользователя (например, ‘DST_fix’). Если желаете видеть его в меню скриптов (Scripts menu), поместите файл со скриптом в ~/Library/Scripts/Applications/iPhoto (предварительно создать там папку iPhoto). Я использовал этот AppleScript только с iPhoto в режиме просмотра, а не редактирования; изменения применяются к выделенным фотографиям (даже в Smart Folders).

Далее

AppleScript: Скрытые настройки QuickTime X в Snow Leopard

Читай новости Mac911.RU в удобном и популярном формате RSS Условия размещения рекламы на Mac911.RU|iPod911.RU

В Snow Leopard (Mac OS X 10.6) множество настроек QuickTime X не отображаются ни в панели Preference, ни в плеере QuickTime. В Snow Leopard есть два CLI- инструмента для QuickTime, позволяющих смотреть и менять скрытые настройки: qtdefaults – позволяет устанавливать и менять значительную часть настроек, которые раньше были в панели QuickTime Preference. mediastreamsegmenter – IP- переговоры через кодировщики, использующие HTTP Live Streaming.

web.me.com/celebi23/QuickTimeXScripts/Main.html

Набор скриптов QuickTime Player X Hidden Preferences Scripts Version 2.2.1 содержит множество других интересных инструментов управления скрытыми настройками QuickTime X; инструкция по установке на русском (перевод Google).

macosxhints.com

Далее

AppleScript: Вставка символов Unicode

Читай новости Mac911.RU в удобном и популярном формате RSS Условия размещения рекламы на Mac911.RU|iPod911.RU

Я использую AppleScript почти ежедневно. Иногда мне требуется вставлять Unicode- символы, например, в TextEdit. Конечно вы можете как всегда вводить их через Character Palette. Но я наткнулся на интересный способ применения возможностей AppleScript для вставки Unicode- символов с использованием формата «data». Кстати, это не единственное применение формата «data»; с его помощью можно сделать множество интересных вещей, к примеру, хранить изображения. Но здесь поговорим только о создании Unicode- строк.

landepictures.com

Текст Unicode в формате «data» имеет вид «data utxt». Это – пустая, «сырая» Unicode- строка. После utxt вы можете вводить четырехзначный код символа. Итак, попробуйте ввести этот скрипт в AppleScript Editor: «data utxt2756» Вернется буквенное соответствие «data utxt2756», после которого следует добавить «as Unicode text», например, вот так: «data utxt2756» as Unicode text Теперь я этой строкой часто пользуюсь, возможно и вам пригодится. Протестировано только в Снежном Барсе (10.6).

macosxhints.com

Далее