eddy_em: (Default)
Вчера хотел поснимать с ИК-датчиков картинки (облачности не было, но местами была на небе дымка), однако, забыл IP-адрес одноплатника! Вот, утром накидал такой скрипт, чтобы всю нашу подсетку проверить:
#!/bin/bash

trap "echo Exited!; exit;" SIGINT SIGTERM

if [ $# -ne 1 ]; then
	echo "Usage: $0 IP_base (like $0 192.168.70) - ping all IP in 192.168.70.1 .. 192.168.70.254" >&1
	exit 1
fi

for x in $(seq 1 254); do
	IP="$1.$x"
	HOST=$(host $IP)
	if [ $? -eq 0 ]; then
		HOST=$(echo $HOST| awk '{print $5}')
	else
		HOST="-"
	fi
	ping -c 1 -W1 $IP >/dev/null 2>/dev/null && echo "$IP, $HOST"
done

Советую обратить внимание на строчку trap ...: она позвляет отслеживать прерывание цикла по Ctrl+C и завершать при этом весь скрипт, а не только текущую команду в цикле.
Когда-то я писал нечто подобное (но уже с другой целью: пинговать выключенные компьютеры), чтобы динамически менять (где-то раз в полчаса) IP-адрес компьютера (заодно можно еще и по данным arp составить табличку и MAC менять тоже на целевой). А в гостинице в Ереване был у меня скриптик, который к wifi переподключался в случае снижения скорости (там за трафик рубили, а я торренты качал ☺) с новым MAC-адресом.
eddy_em: (Default)
Понадобилось мне завести студентов на нашем сервере, ну, как говорится, "лучше день потерять, зато потом за полчаса долететь". Написал скриптик:
#!/bin/bash

if [ $# -ne 1 ]; then
    echo -e "Usage: $0 file\n\tEvery line of file is login password Name1 Name2 ...\n\tUsers will be created in /Students/login"
    exit 1
fi

while read log pass nm; do
    echo "log=${log}, pass=${pass}, nm=${nm}"
    useradd -b /Students -g students -m -N ${log} -c "${nm}" --badname
    echo "${log}:${pass}" | chpasswd 
done < $1


Ну и скрипт, чтобы всю толпу разом удалить:
#!/bin/bash

if [ $# -ne 1 ]; then
    echo -e "Usage: $0 file\n\tEvery line of file is login password Name1 Name2 ...\n\tUsers will be DELETED"
    exit 1
fi

while read log pass nm; do
    echo "Delete ${log}"
    userdel -r -f ${log}
done < $1


Файл должен содержать минимум 2 столбца: логин и пароль. Дальше можно еще ФИО в транскрипции запихнуть или еще что — всë остальное пойдет в поле "comment".
eddy_em: (Default)
Вчера наблюдал на полуметровом телескопе. Теоретически, в случае плохой погоды купол сам должен закрыться, но погода вполне. И, чтобы не ждать до утра, поставил себе бесконечный ряд экспозиций и лег спать, включив будильник на полпятого утра. Просыпаюсь, а почти сотня кадров - мимо! Монтировка самостоятельно не делает перекладку после пересечения меридиана.
Сегодня не хочется такое повторить. ОК, наши руки не для скуки. Пишем баш-скрипт
Больше рукожопия! )
eddy_em: (Костерок)
Намедни я порвал на гитаре первую струну, а т.к. струны уже черт-те какой давности и давно проржавели, я решил полностью их заменить.
Ну, а пока сидел на кухне рядом с ноутбуком и натягивал струны, подумал, что неплохо было бы сделать простой скриптик для настройки (а то что это я — все "на слух", да "на слух")… В общем, скриптик под катом.
P.S. Оказалось, что "слух" у меня более-менее: настраиваю примерно на тон ниже, чем надо (а я всю жизнь именно так гитары и настраиваю, т.к. на акустике тон-в-тон настроить нельзя — вокальный диапазон не позволяет, а на электре проще бэнды на пару тонов делать).

скриптик )
eddy_em: (hram nauki)
Решил я повесить себе на "горячие клавиши" изменение яркости экрана: чтобы при отключении света не лупасило сильно по глазам. Это — простая штука (к сожалению, яркость на nVidia можно регулировать лишь программно, т.к. блоб кривоват), которая реализуется двумя строчками в ~/.icewm/keys:
key "XF86Launch5" xrandr --output HDMI-0 --brightness .6
key "XF86Launch6" xrandr --output HDMI-0 --brightness 1




Однако, этого мне было мало, и я набросал простенький скриптик, который можно запускать по at или cron:
#!/bin/bash
#
# Change light of screen depending on common lightness
#
at now + 1 minute -M -f /Data/scripts/Screen_light1
FILE=/tmp/$$.jpg
ffmpeg -sameq -r 5 -f video4linux2 -s 640x480 -i /dev/video0 -ss 00:00:03.8 -t 00:00:00.1 -f image2 $FILE
BRI=$(convert $FILE -format "%[mean]" info:)
rm -f $FILE
BRILVL=$(echo "a=l($BRI)-8; if(a>1) a=1 else if(a<0.6) a=0.6; print a;" | bc -ql)
#echo "BRI: $BRI, LVL:  $BRILVL"
xrandr --output HDMI-0 --brightness $BRILVL


Суть скриптика в следующем: ffmpeg захватывает с веб-камеры 1 кадр (с задержкой, чтобы вебка успела выйти в авторежим — хотя, для чистоты эксперимента лучше будет при помощи v4l2ctl отключить всю автоматизацию у вебки, тогда и задержка не нужна будет), затем ImageMagic вычисляет некую среднюю яркость по этому изображению, ну а потом при помощи bc мы на основе средней яркости вычисляем, какую яркость монитора следует задать на вход xrandr.

Потестирую завтра еще и при свете дня.
eddy_em: (Default)
Сидел сейчас, чуть подрихтовывал один скриптик. И пришла мне мысль, все свои основные скрипты поместить на гуглокод: мало ли, где понадобятся (чтобы на флешке постоянно их не таскать). Заодно вспомнил, как пользоваться mercurial )
P.S. проект на гуглокоде, просмотр скриптов.
P.P.S. Простую архивацию для заливки файла на гуглокод тоже можно сделать при помощи mercurial: hg archive scripts.tgz.
eddy_em: (Default)
Сидел я последние несколько часов и занимался тем, что вручную набивал то же самое, что написано в pdf-файле (нераспознанном). Плюнул на это, поставил cuneiform и к нему графическую морду — yagf.
Дальше )
eddy_em: (Default)
(Стырено отсюда).
На прошлый новый год "подарил" я себе эту замечательную клавиатуру. Работать на ней просто замечательно. Но вот незадача: не работал движок "Zoom". Я особо этим не интересовался, пока с месяц назад не нашел, как можно заставить эту клавиатуру работать на все 100%.

На этот раз мысью по древу не растекаюсь )

После всех вышеперечисленных телодвижений "zoom" начинает работать как прокрутка колесом мыши.

July 2025

S M T W T F S
  12345
6789101112
1314 1516 171819
20212223242526
2728 29 30 31  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 6th, 2025 03:24 am
Powered by Dreamwidth Studios