LINUX.ORG.RU
ФорумAdmin

Скрипт-демон


0

1

Нужна помощь в написании простейшего скрипта типа:

#macchanger

#!/bin/bash

`ifconfig | grep wlan0 |grep HWaddr` > $1

while

[ «$1» -eq «wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00» ]; do

ifconfig wlan0 down

/usr/bin/macchanger -r wlan0

ifconfig wlan0 up

sleep 1

if [ -z «`ps ax | grep example.php| grep -v grep`»]; then

`nohup /usr/bin/php /usr/local/myscripts/macchanger`

fi

done

2 и 4 строчки - бред, а надо так чтобы работало.

Идея скрипта: скрипт демон (по имени macchanger) крутится каждую 1 секунду, проверяет какой мак ( коммандой ifconfig | grep wlan0 |grep HWaddr или чем-то подобным), если мак тот, что задан то он его меняет на какой-то другой, иначе ничего не делает и через секунду все возвращается как было, в дополнение скрипт проверяет не запущен ли он сам больше 1 раза.

Запускать каждую минуту по крону, ограничив выполнение скрипта 60-ю повторениями и добавив проверку на наличие какого-нибудь pid-файла. Пока файл есть - просто спим по секунде, файла нет - создаём, запоминаем что создали (игнорируем правило «спим по секунде»), фигачим проверку. В тесте у тебя используется бинарная операция -eq, которая, АФАИК, нужна для проверки совпадения _чисел_, а не строк, которые, в свою очередь, сравниваются оператором = (man test тебе поможет)... слушай, какой у тебя интересный скрипт :)

spunky ★★ ()

Нужна помощь в написании простейшего скрипта

Разделом ошибся

anonymous ()

если мак тот, что задан то он его меняет на какой-то другой, иначе ничего не делает и через секунду все возвращается как было

я не могу понять где можно применять данный финт практически, однако что-то подсказывает мне, что изначальную задачу можно решить без столь явных и кривых костылей. как звучит изначальная задача, для которой требуется этот изврат с маками?

Komintern ★★★★★ ()

Согласен с предыдущим оратором, полный текст задачи в студию.

riki ★★★★ ()
#!/bin/bash
scriptname=`basename $0`;
(
	flock -x 200;
	for ((counter=0;counter<60;counter++))
		do
		date +%s;
		sleep 1;
		done
) 200>$scriptname.lock

это тебе для примера. В месте date +%s можешь вставлять что твоей душеньке угодно. В данном случае используется «семафор» на ФС, что не совсем комильфо, да и количество исполняемых скриптов может поднакопиться из-за задержек в выполнении «полезной нагрузки».

spunky ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.