Полезняшки для DIR-320

Post new topic   Reply to topic    DD-WRT Forum Index -> Оборудование на основе Broadcom
Goto page Previous  1, 2, 3, ... 10, 11, 12  Next
Author Message
kenzo
DD-WRT User


Joined: 28 Feb 2009
Posts: 138

PostPosted: Mon Mar 23, 2009 18:21    Post subject: Reply with quote
Mr. Banan wrote:
kenzo wrote:
запускается дополнительный скрипт /jffs/etc/stop завершающий работу программ на HDD

А можно сей скрипт в студию?


Ну вообще мой скрипт не образец для повторения, он завершает только заданные программы, в нем наверняка сделано что-то неправильно, не спец я по linux, тем не менее, это скрипт выполняет поставленную перед ним задачу.
Где то в одной из соседних тем пробегал скрипт завершающий любые программы.
Code:
#!/bin/sh
#==завершаем работу transmission
    killall transmission-daemon
#=========stop samba============
if [ -n "`pidof smbd`" ] ; then
    echo "Stopping smbd:"
    killall smbd
fi
if [ -n "`pidof nmbd`" ] ; then
    echo "Stopping nmbd:"
    killall nmbd
fi
#==========stop xinetd==========
OPTWARE_TARGET=ddwrt
killall xinetd 2>/dev/null

# Stop other inetd processes if running
if [ ${OPTWARE_TARGET} = "nslu2" ] ; then
  killall inetd 2>/dev/null
fi
#===============================
#Ожидаем остановки процесса 1.5 минуты, если не завершился прибиваем

name="transmission-daemon"
wait=90
i=0
while [ -n "`pidof -s $name`" ]
 do
  if [ "$i" -gt "$wait" ]
  then
    echo "Process $name is not stopped for $wait seconds"
    killall -9 $name   #эта команда не проверялась
    break
  fi
let "i++"
sleep 1
done
#==================
sleep 1
unset LD_LIBRARY_PATH

umount /mnt
umount /etc/profile
umount /opt
sleep 1
Sponsor
stylus
DD-WRT User


Joined: 08 Dec 2008
Posts: 198

PostPosted: Wed Apr 01, 2009 19:15    Post subject: Reply with quote
Вот маленький но полезный плугин для firefox,может кому пригодиться http://www.undermined.org/projects/files/screenshots/5
lvadim
DD-WRT Novice


Joined: 24 Apr 2009
Posts: 17
Location: Kiev

PostPosted: Fri May 08, 2009 20:33    Post subject: Reply with quote
Чуть доработал скрипт, может кому пригодиться Smile
Смысл доработок:
1. Проверяем кнопку каждую секунду, но после проверяем через 3 сек, что позволяет коротким нажатием выключать Wifi (правда при длинном он тоже переключается... но это меньшее зло )
2. Если диски отключены, то скрипт подключает их и запускает стартап скрипт optware (зажигает синюю лампу)
3. Чуть больше индикации - в конце при успехе короткий того же цвета

(while sleep 6
do
if [ $(($(printf "%d" "'`dd if=/dev/gpio/in count=1 2>/dev/null`")&64)) -eq 0 ]
then
sleep 3;
if [ $(($(printf "%d" "'`dd if=/dev/gpio/in count=1 2>/dev/null`")&64)) -eq 0 ]
then
if [ `/bin/df | /bin/grep -c 'part'` -ne 0 ]
then
gpio disable 3
/jffs/etc/stop
umount /jffs
sleep 1;gpio enable 3
if [ `/bin/df | /bin/grep -c 'part'` -ne 0 ]
then
sleep 1;gpio disable 4;sleep 1;gpio enable 4
sleep 1;gpio disable 4;sleep 1;gpio enable 4
else
gpio disable 3
sleep 1;
gpio enable 3
fi
else
gpio disable 4;sleep 3;gpio enable 4
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part2 /jffs &
mount -o noatime /dev/scsi/host0/bus0/target0/lun0/part3 /mnt
/jffs/etc/config/optware.startup
sleep 1;gpio disable 4;sleep 1;gpio enable 4
fi
fi
fi
done;) &
sharnir
DD-WRT Novice


Joined: 22 Aug 2008
Posts: 7

PostPosted: Sat May 09, 2009 4:44    Post subject: Reply with quote
Проверять кнопку нет никакого смысла, достаточно положить любой скрипт script.sesbutton в одно из следующих мест:
Code:
/etc/config/
/jffs/etc/config/
/mmc/etc/config/
/tmp/etc/config/
kenzo
DD-WRT User


Joined: 28 Feb 2009
Posts: 138

PostPosted: Sun May 10, 2009 8:47    Post subject: Reply with quote
sharnir wrote:
Проверять кнопку нет никакого смысла, достаточно положить любой скрипт script.sesbutton в одно из следующих мест:
Code:
/etc/config/
/jffs/etc/config/
/mmc/etc/config/
/tmp/etc/config/

аха работает, только в случае с отмантированием скрипт имеет смысл ложить в /tmp/etc/config/ не забывая делать его исполняемым.
WP_Hedgehog
DD-WRT User


Joined: 07 Apr 2009
Posts: 64

PostPosted: Fri May 29, 2009 14:27    Post subject: Run-On-Mount script. -- Может кому пригодит Reply with quote
DIR-320
DD-WRT v24-sp2 (05/27/09) mini-usb
(SVN revision 12220M NEWD Eko)


Использую внешний USB-HDD подготовленный следующим образом: с помощью Paragon HDD Manager 8 на диске созданы три (primary) раздела:

  1. Fat32 (основной);
  2. Ext3 – под JFFS:
  3. LinuxSWAP2;

Основной раздел оставлен в FAT32 с мыслью иметь возможность на ходу отключать USB-HDD от роутера и подключать куда-нибудь ещё. Физический порядок размещения разделов на диске может быть произвольным, однако следует иметь в виду, что dd-wrt автоматически монтирует только один раздел – тот который имеет первый логический номер в таблице разделов (занимает первый слот). Точно также и для сохранения совместимости с Windows (если она нужна) раздел общего назначения должен быть логически первым. Размечая диск обратите на это внимание. Так, например у меня, физическая картина размещения разделов следующая:

Однако с помощью опции главного меню Paragon'а «Change primary Slot» логический порядок разделов установлен таким:


Внимание! Приведённый ниже скрипт рассчитан именно на такой (логический) порядок разделов!

Итак, в настройках роутера (раздел «Services» –> «USB») установлены следующие параметры:

Каталог «Autorun.inf» создан на диске с конкретным умыслом: таким путём можно обезопасить себя (в какой-то степени) от так любимых средой Windows вирусов, норовящих прописать собственный загрузочный файл autorun.inf в корень диска. А тут место уже занято! Very Happy (Каталог также имеет атрибуты скрытого и системного.)

Как видно, в качестве автостартующего указан скрипт run-on-mount, о котором я и собираюсь рассказать.
Что он делает:

  • Перед началом любого действия выполняется проверка возможности его выполнить (можете считать меня параноиком Smile );
  • Монтирует к /jffs 2'й раздел диска;
  • К /opt подклеивает каталог /jffs/opt (если его нет – создаёт и подклеивает);
  • Подключает SWAP (если установлен busybox).
  • Создаёт скрипт action.sesbutton, который следит за боковой кнопкой и предназначен для завершения запущеных с внешнего носителя процессов и отмонтированию разделов – т.е. для безопасного извлечения USB-носителя. Помещает этот скрипт в /tmp/etc/config;
  • Создаёт скрипт, который перемонтирует /mnt с параметром noatime и исполняет его.
  • Если в процессе выполнения какие-то этапы не выполняются, коротко вспыхивает красный светодиод боковой кнопки;
  • Если процесс монтирования был успешно завершён на 2 секунды зажигает синий светодиод боковой кнопки (красный при проблемах). Это также сигнал готовности.

Собственно текст скрипта run-on-mount (он же в ZIP'е во вложении к этому посту):
Code:
#!/bin/sh
# +-----------------------------------------------------+
# |       All value actually for D-Link DIR-320         |
# +-----------------------------------------------------+
#
# Red spark('s) in process - error('s).

Red=3             # gpio pin num. of RED SES LED
Blue=4            # gpio pin num. of BLUE SES LED
t=100000          # time interval in micro- s. (for short, "spark" LED light)
T=2               # Time interval in s. (for long LED light & pause's)
NAS="part1"       # USB-HDD partition for file storage (ftp, torrent, samba)
JFFS="part2"      # USB-HDD partition for Journaing File System - must be Ext3
SWAP="part3"      # USB-hdd partition for SWAP - must be Linux SWAP[2]

# <On> SES LED function
sledon()
{ gpio disable $1; }

# <Off> SES LED function
sledoff()
{ gpio enable $1; usleep $t; }

# Onse spark of SES LED
blink()                
{ sledon $1; usleep $t; sledoff $1; }

# Turn <Off> RED and BLUE SES LED's
sledoff $Red& sledoff $Blue&

# Check mount point AND exlude double-mount of /jffs
if [ -d /jffs -a ! -d /jffs/lost+found ];
 then mount -o noatime /dev/discs/disc0/$JFFS /jffs;
 else blink $Red;
fi;

# Check mount of /jffs and automatically create /opt
if [ -d /jffs/lost+found -a ! -d /jffs/opt/ ];
 then mkdir -p /jffs/opt/usr;
fi;

# Check mount point AND exlude double-mount of /opt
if [ -d /opt -a -d /jffs/opt -a ! -d /opt/usr ];
 then mount -o bind /jffs/opt /opt;
 else blink $Red;
fi;

# Initialize SWAP if installed busybox
if [ -f /opt/bin/busybox ];
 then /opt/bin/busybox swapon /dev/discs/disc0/$SWAP;
 else blink $Red;
fi;

# Create /tmp/etc/config
if [ ! -d /tmp/etc/config ];
 then mkdir /tmp/etc/config;
 Else blink $Red;
fi;

# +-----------------------------------------------------+
# | Create /tmp/etc/config/action.sesbutton             |
# | This script, running while press SES-Button.        |
# | Stop running OptWare process's & UnMount USB-HDD    |
# | Modify it as you need.                              |
# +-----------------------------------------------------+
if [ -d /tmp/etc/config ];
   then echo "#!/bin/sh"                                             > /tmp/etc/config/action.sesbutton;
   echo "sledon()"                                                >> /tmp/etc/config/action.sesbutton;
   echo "{ gpio disable "\$1"; }"                                 >> /tmp/etc/config/action.sesbutton;
   echo "sledoff()"                                               >> /tmp/etc/config/action.sesbutton;
   echo "{ gpio enable "\$1"; }"                                  >> /tmp/etc/config/action.sesbutton;
   echo "sledoff "$Red"; sledoff "$Blue";"                        >> /tmp/etc/config/action.sesbutton;
   echo "sledon "$Red"; sleep "$T"; sledoff "$Red";"              >> /tmp/etc/config/action.sesbutton;
   
   # Add personal task-stop command follow by format:
   # +-----------------------------------------------------+     
   # | echo "command" >> /tmp/etc/config/action.sesbutton; |
   # +-----------------------------------------------------+
   echo " " >> /tmp/etc/config/action.sesbutton;

   # Stop SWAP (if exist busybox)
   echo "if [ -f /opt/bin/busybox ];"                             >> /tmp/etc/config/action.sesbutton;
   echo " then /opt/bin/busybox swapoff /dev/discs/disc0/"SWAP";" >> /tmp/etc/config/action.sesbutton;
   echo "fi;"                                                     >> /tmp/etc/config/action.sesbutton;

   # UnMount /opt
   echo "umount -l /opt&"                                         >> /tmp/etc/config/action.sesbutton;
   
   # Check: if /jffs Mount at USB-HDD - UnMount it
   echo "if [ -d /jffs/lost+found ];"                             >> /tmp/etc/config/action.sesbutton;
   echo " then umount -l /jffs;"                                  >> /tmp/etc/config/action.sesbutton;
   echo "fi&"                                                     >> /tmp/etc/config/action.sesbutton;
   
   # UnMount /mnt
   echo "umount -l /mnt&"                                         >> /tmp/etc/config/action.sesbutton;
   echo "sledoff "\$Red""                                         >> /tmp/etc/config/action.sesbutton;
   
   # Check UnMountig and blink 3 times:
   # BLUE SES LED if success
   # RED SES LED if not
   echo "for i in /opt/usr /jffs/lost+found /mnt/Autorun.inf"     >> /tmp/etc/config/action.sesbutton;
   echo " do usleep "$t";"                                        >> /tmp/etc/config/action.sesbutton;
   echo " if [ ! -d "\$i" ];"                                     >> /tmp/etc/config/action.sesbutton;
   echo "  then sledon "$Blue"; usleep "$t"; sledoff "$Blue";"    >> /tmp/etc/config/action.sesbutton;
   echo "  else sledon "$Red"; usleep "$t"; sledoff "$Red";"      >> /tmp/etc/config/action.sesbutton;
   echo " fi;"                                                    >> /tmp/etc/config/action.sesbutton;
   echo "done"                                                    >> /tmp/etc/config/action.sesbutton;
   echo "rm /tmp/root/re-mount;"                                  >> /tmp/etc/config/action.sesbutton;
   echo "{ sleep 2; rm /tmp/etc/config/action.sesbutton; }&"      >> /tmp/etc/config/action.sesbutton;
   else blink $Red;
fi;

# Make /tmp/etc/config/action.sesbutton eXecutable
if [ -f /tmp/etc/config/action.sesbutton ];
 then chmod +x /tmp/etc/config/action.sesbutton;
# +-----------------------------------------------------+
# | Uncomment next command if you want check creating   |
# | of 'action.sesbutton'                               |
# | (script will copied to /mnt/Autorun.inf)            |
# +-----------------------------------------------------+
 cp /tmp/etc/config/action.sesbutton /mnt/Autorun.inf
 else blink $Red;
fi;

# +-----------------------------------------------------+
# | Create /tmp/root/re-mount script.                   |
# | This script Re-Mount /mnt with 'noatime' parametr   |
# +-----------------------------------------------------+
echo "#!/bin/sh"                                                         > /tmp/root/re-mount;
echo "sledon()"                                                          >> /tmp/root/re-mount;
echo "{ gpio disable "\$1"; }"                                           >> /tmp/root/re-mount;
echo "sledoff()"                                                         >> /tmp/root/re-mount;
echo "{ gpio enable "\$1"; }"                                            >> /tmp/root/re-mount;
echo "umount -l /mnt;"                                                   >> /tmp/root/re-mount;
echo "if [ ! -d /mnt/Autorun.inf ];"                                     >> /tmp/root/re-mount;
echo " then mount -o noatime /dev/discs/disc0/"$NAS" /mnt"               >> /tmp/root/re-mount;
echo " else sledon "$Red"; usleep "$t"; sledoff "$Red";"                 >> /tmp/root/re-mount;
echo "fi;"                                                               >> /tmp/root/re-mount;
echo "if [ -d /opt/usr -a -d /jffs/lost+found -a -d /mnt/Autorun.inf ];" >> /tmp/root/re-mount;
echo " then sledon "$Blue"; sleep "$T"; sledoff "$Blue";"                >> /tmp/root/re-mount;
echo " else sledon "$Red"; sleep "$T"; sledoff "$Red";"                  >> /tmp/root/re-mount;
echo "fi;"                                                               >> /tmp/root/re-mount;

# +-----------------------------------------------------+
# | Make /tmp/root/re-mount eXecutable & Run it           |
# | In end-of action SES LED turn <On> at 2 s.          |
# | BLUE - if sucess ALL mount, RED - if not.           |
# +-----------------------------------------------------+
if [ -f /tmp/root/re-mount ];
 then chmod +x /tmp/root/re-mount;
# +-----------------------------------------------------+
# | Uncomment next command if you want check creating     |
# | of 're-mount'                                       |
# | (script will copied to /mnt/Autorun.inf)            |
# +-----------------------------------------------------+
 cp /tmp/root/re-mount /mnt/Autorun.inf;
 /tmp/root/re-mount&
 else blink $Red;
fi

В результате своей работы скрипт создаёт два других скрипта (для контроля и отладки он может копировать также обратно в /mnt/Autorun.inf): /tmp/root/re-mount:
Code:
#!/bin/sh
sledon()
{ gpio disable $1; }
sledoff()
{ gpio enable $1; }
umount -l /mnt;
if [ ! -d /mnt/Autorun.inf ];
 then mount -o noatime /dev/discs/disc0/part1 /mnt
 else sledon 3; usleep 100000; sledoff 3;
fi;
if [ -d /opt/usr -a -d /jffs/lost+found -a -d /mnt/Autorun.inf ];
 then sledon 4; sleep 2; sledoff 4;
 else sledon 3; sleep 2; sledoff 3;
fi;


И /tmp/etc/config/action.sesbutton скрипт (функциональность переключения Wi-Fi я не то чтобы совсем пожертвовал, просто ещё не научился как это сделать Smile ):
Code:
#!/bin/sh
sledon()
{ gpio disable $1; }
sledoff()
{ gpio enable $1; }
sledoff 3; sledoff 4;
sledon 3; sleep 2; sledoff 3;
 
if [ -f /opt/bin/busybox ];
 then /opt/bin/busybox swapoff /dev/discs/disc0/SWAP;
fi;
umount -l /opt&
if [ -d /jffs/lost+found ];
 then umount -l /jffs;
fi&
umount -l /mnt&
sledoff $Red
for i in /opt/usr /jffs/lost+found /mnt/Autorun.inf
 do usleep 100000;
 if [ ! -d $i ];
  then sledon 4; usleep 100000; sledoff 4;
  else sledon 3; usleep 100000; sledoff 3;
 fi;
done
rm /tmp/root/re-mount;
{ sleep 2; rm /tmp/etc/config/action.sesbutton; }&


В качестве shutdown-скрипта в web-морде прописано следующее:
Code:
if [ -f /tmp/etc/config/action.sesbutton ];
 then /tmp/etc/config/action.sesbutton;
fi



P.S. Несмотря на использование тэга кода всё форматирование разъехалось Sad


Last edited by WP_Hedgehog on Thu Jul 08, 2010 6:29; edited 1 time in total
WP_Hedgehog
DD-WRT User


Joined: 07 Apr 2009
Posts: 64

PostPosted: Fri May 29, 2009 14:41    Post subject: Вдогонку,: скрипт для установки op Reply with quote
Вдогонку. Smile
Небольшой скрипт для установки optware по стандартной, описанной в wiki методике (лежит у меня рядом с run-on-mount'ом в Autorun.inf) Он же устанвливает и расширенную версию busybox'а, необходимую для запуска SWAP-раздела.

Скрипт optware:
Code:
#!/bin/sh
# Install optware

wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d "\r" > /tmp/root/optware-install.sh
if [ -f /tmp/root/optware-install.sh ];
 then chmod +x /tmp/root/optware-install.sh;
      echo ;
      echo "****************************** List of /tmp/root ******************************";
      echo ;
      ls -l /tmp/root;
      echo "*******************************************************************************";
      echo ;
      echo "******************************* Install optware *******************************";
      echo :
      /tmp/root/optware-install.sh;
      echo ;
      echo "******************************** List of /opt *********************************";
      echo ;
      ls -l /opt;
      echo "*******************************************************************************";
      echo ;
fi
if [ ! -f /opt/bin/busybox ];
 then /opt/bin/ipkg-opt update;
      echo ;
      echo "****************************** Install BusyBox *******************************";
      /opt/bin/ipkg-opt install busybox;
fi
Phoenixn
DD-WRT Novice


Joined: 13 Dec 2008
Posts: 48

PostPosted: Tue Jun 16, 2009 21:25    Post subject: Reply with quote
а как узнать gpio кнопки и всех светодиодов?
Zhenchik
DD-WRT Novice


Joined: 27 Jun 2009
Posts: 2

PostPosted: Sat Jun 27, 2009 11:13    Post subject: индикатор принтера Reply with quote
А сообразит ли кто-нибудь скрипт, зажигающий индикатор принтера на DIR-320 при его подключении (usblp0:) и гасящий при отключении?
А то на оригинальной прошивке работает, на DD-WRT (v24-sp2 (06/22/09) mini-usb-ftp - build 12360M NEWD Eko) - нет.
Zhenchik
DD-WRT Novice


Joined: 27 Jun 2009
Posts: 2

PostPosted: Sat Jun 27, 2009 21:25    Post subject: Re: индикатор принтера Reply with quote
lprot
DD-WRT Novice


Joined: 08 Aug 2009
Posts: 18

PostPosted: Tue Aug 11, 2009 8:55    Post subject: Reply with quote
А не подскажут ли знающие люди:
1. Как посмотреть SMART винта (в частности температуру)
2. Остановить винт при неактивности например 30мин.
stylus
DD-WRT User


Joined: 08 Dec 2008
Posts: 198

PostPosted: Sat Aug 15, 2009 9:52    Post subject: Reply with quote
Вот своял маленький скриптик,для вывода на веб страницу кучи полезной инфы о роутере (иногда полезно бывает),требования:любой веб сервер с поддержкой cgi.При желании можете дописать туда что то свое.

info.cgi

Code:

#!/bin/sh

run_time=`cat /proc/uptime | awk '{print $1}'`
cnt="<center>"
cnt_end="</center>"
syst="System Info"
if [ "$QUERY_STRING" == "" ]
        then
        QUERY_STRING="sys"
fi
case "$QUERY_STRING" in
sys) vhead="${syst}"
        cnt=""
        cnt_end=""
        tab="`cat /proc/version`<br>`uptime`<br><center><u>Cpu</center><pre>`cat /proc/cpuinfo`</pre>"
        tab="${tab}<center>Memory</center><pre>`cat /proc/meminfo`</pre>"
        tab="${tab}<center>Filesystem</center><pre>`/bin/df -h`</pre>"
        tab="${tab}<center>Proccess</center><pre>`ps`</pre>"
        tab="${tab}<center>Loaded modules</center><pre>`lsmod`</pre>"
        tab="${tab}<center>Route</center><pre>`route -en`</pre>"
        tab="${tab}<center>Arp</center><pre>`cat /proc/net/arp`</pre>"
        tab="${tab}<center>Hosts</center><pre>`cat /etc/hosts`</pre>"
        tab="${tab}<center>Interfaces</center><pre>`ifconfig`</pre>" ;;
net)    vhead="${syst}"
        cnt=""
        cnt_end=""
        tab="${tab}<center><u>Listening ports</center><pre>`netstat -lna`</pre>"
        tab="${tab}<center>Connections</center><pre>`cat /proc/net/ip_conntrack`</pre>" ;;
iptab)  vhead="${syst}"
        cnt=""
        cnt_end=""
        tab="${tab}<center><u>Iptables Info</center><pre>`iptables-save`</pre>" ;;
log)    vhead="${syst}"
        cnt=""
        cnt_end=""
        tab="${tab}<center><u>System Logfile</center><pre>`tail -n 5000 /var/log/messages`</pre>" ;;
soft)   vhead="${syst}"
        cnt=""
        cnt_end=""
        tab="${tab}<center><u>Installed Packages</center><pre>`/opt/bin/ipkg-opt list_installed`</pre>" ;;
esac
echo "Content-type: text/html; charset=utf-8"
echo
echo "<HTML><HEAD><TITLE>System Info v.1.0.0</TITLE><meta http-equiv=pragma content=no-cache>"
echo "<meta http-equiv=cache-control content=no-cache, no-store, must-revalidate>"
echo "</HEAD><BODY link=#cecece vlink=#cecece alink=#cecece bgcolor=#000000 text=#99CCCC>"
echo "<table cols=1 width=100% border=0>"
echo "<tr><td><center><h3>${vhead}</h3></center></td>"
echo "</center></td></tr></table>"
echo "<center><script language=JavaScript>"
echo "document.writeln(document.lastModified)"
echo "</script></center><br>"
echo "<table width=100% border=0><tr><td valign=top>"
echo "<fieldset><legent>Menu:</legent><br><a href=info.cgi?sys>General</a><br>"
echo "<a href=info.cgi?iptab>Firewall</a><br>"
echo "<a href=info.cgi?net>Network</a><br>"
echo "<a href=info.cgi?soft>Software</a><br>"
echo "<a href=info.cgi?log>Syslog</a>"
echo "</fieldset>"
echo "<td width=100%>${cnt} ${tab} ${cnt_end}</td></table>"
run_time2=`cat /proc/uptime | awk '{print $1}'`
run_time=`echo "$run_time2 $run_time" | awk '{printf "%s\n",$1-$2}'`
echo "<center>Generated in ${run_time} sec.</center>"
echo "</BODY></HTML>"


Еще можно добавить защиту от дурака =) но это совсем простенько.

Code:

echo "<script language=JavaScript>"
echo "if ('top.location.search==') {"
echo "pass = prompt('login');"
echo "if (pass=='123456')"
echo "{ alert('access granted!') } else { alert('access denied!'), top.location.href='http://www.microsoft.com/' }"
echo "};</script>"

_________________
Oleg firmware > DD-WRT > OpenWRT Kamikaze
m0t0dr0m
DD-WRT Novice


Joined: 30 Aug 2009
Posts: 2

PostPosted: Sun Aug 30, 2009 2:04    Post subject: Re: Run-On-Mount script. -- Может кому пригод Reply with quote
WP_Hedgehog wrote:
DIR-120
DD-WRT v24-sp2 (05/27/09) mini-usb
(SVN revision 12220M NEWD Eko)


Code:
#!/bin/sh
# +-----------------------------------------------------+
# |       All value actually for D-Link DIR-320         |
# +-----------------------------------------------------+
#
# Red spark('s) in process - error('s).

Red=3             # gpio pin num. of RED SES LED
Blue=4            # gpio pin num. of BLUE SES LED
t=100000          # time interval in micro- s. (for short, "spark" LED light)
T=2               # Time interval in s. (for long LED light & pause's)
NAS="part1"       # USB-HDD partition for file storage (ftp, torrent, samba)
JFFS="part2"      # USB-HDD partition for Journaing File System - must be Ext3
SWAP="part3"      # USB-hdd partition for SWAP - must be Linux SWAP[2]

# <On> SES LED function
sledon()
{ gpio disable $1; }

# <Off> SES LED function
sledoff()
{ gpio enable $1; usleep $t; }

# Onse spark of SES LED
blink()                
{ sledon $1; usleep $t; sledoff $1; }

# Turn <Off> RED and BLUE SES LED's
sledoff $Red& sledoff $Blue&

# Check mount point AND exlude double-mount of /jffs
if [ -d /jffs -a ! -d /jffs/lost+found ];
 then mount -o noatime /dev/discs/disc0/$JFFS /jffs;
 else blink $Red;
fi;

# Check mount of /jffs and automatically create /opt
if [ -d /jffs/lost+found -a ! -d /jffs/opt/ ];
 then mkdir -p /jffs/opt/usr;
fi;

# Check mount point AND exlude double-mount of /opt
if [ -d /opt -a -d /jffs/opt -a ! -d /opt/usr ];
 then mount -o bind /jffs/opt /opt;
 else blink $Red;
fi;

# Initialize SWAP if installed busybox
if [ -f /opt/bin/busybox ];
 then /opt/bin/busybox swapon /dev/discs/disc0/$SWAP;
 else blink $Red;
fi;

# Create /tmp/etc/config
if [ ! -d /tmp/etc/config ];
 then mkdir /tmp/etc/config;
 Else blink $Red;
fi;

# +-----------------------------------------------------+
# | Create /tmp/etc/config/action.sesbutton             |
# | This script, running while press SES-Button.        |
# | Stop running OptWare process's & UnMount USB-HDD    |
# | Modify it as you need.                              |
# +-----------------------------------------------------+
if [ -d /tmp/etc/config ];
   then echo "#!/bin/sh"                                             > /tmp/etc/config/action.sesbutton;
   echo "sledon()"                                                >> /tmp/etc/config/action.sesbutton;
   echo "{ gpio disable "\$1"; }"                                 >> /tmp/etc/config/action.sesbutton;
   echo "sledoff()"                                               >> /tmp/etc/config/action.sesbutton;
   echo "{ gpio enable "\$1"; }"                                  >> /tmp/etc/config/action.sesbutton;
   echo "sledoff "$Red"; sledoff "$Blue";"                        >> /tmp/etc/config/action.sesbutton;
   echo "sledon "$Red"; sleep "$T"; sledoff "$Red";"              >> /tmp/etc/config/action.sesbutton;
   
   # Add personal task-stop command follow by format:
   # +-----------------------------------------------------+     
   # | echo "command" >> /tmp/etc/config/action.sesbutton; |
   # +-----------------------------------------------------+
   echo " " >> /tmp/etc/config/action.sesbutton;

   # Stop SWAP (if exist busybox)
   echo "if [ -f /opt/bin/busybox ];"                             >> /tmp/etc/config/action.sesbutton;
   echo " then /opt/bin/busybox swapoff /dev/discs/disc0/"SWAP";" >> /tmp/etc/config/action.sesbutton;
   echo "fi;"                                                     >> /tmp/etc/config/action.sesbutton;

   # UnMount /opt
   echo "umount -l /opt&"                                         >> /tmp/etc/config/action.sesbutton;
   
   # Check: if /jffs Mount at USB-HDD - UnMount it
   echo "if [ -d /jffs/lost+found ];"                             >> /tmp/etc/config/action.sesbutton;
   echo " then umount -l /jffs;"                                  >> /tmp/etc/config/action.sesbutton;
   echo "fi&"                                                     >> /tmp/etc/config/action.sesbutton;
   
   # UnMount /mnt
   echo "umount -l /mnt&"                                         >> /tmp/etc/config/action.sesbutton;
   echo "sledoff "\$Red""                                         >> /tmp/etc/config/action.sesbutton;
   
   # Check UnMountig and blink 3 times:
   # BLUE SES LED if success
   # RED SES LED if not
   echo "for i in /opt/usr /jffs/lost+found /mnt/Autorun.inf"     >> /tmp/etc/config/action.sesbutton;
   echo " do usleep "$t";"                                        >> /tmp/etc/config/action.sesbutton;
   echo " if [ ! -d "\$i" ];"                                     >> /tmp/etc/config/action.sesbutton;
   echo "  then sledon "$Blue"; usleep "$t"; sledoff "$Blue";"    >> /tmp/etc/config/action.sesbutton;
   echo "  else sledon "$Red"; usleep "$t"; sledoff "$Red";"      >> /tmp/etc/config/action.sesbutton;
   echo " fi;"                                                    >> /tmp/etc/config/action.sesbutton;
   echo "done"                                                    >> /tmp/etc/config/action.sesbutton;
   echo "rm /tmp/root/re-mount;"                                  >> /tmp/etc/config/action.sesbutton;
   echo "{ sleep 2; rm /tmp/etc/config/action.sesbutton; }&"      >> /tmp/etc/config/action.sesbutton;
   else blink $Red;
fi;

# Make /tmp/etc/config/action.sesbutton eXecutable
if [ -f /tmp/etc/config/action.sesbutton ];
 then chmod +x /tmp/etc/config/action.sesbutton;
# +-----------------------------------------------------+
# | Uncomment next command if you want check creating   |
# | of 'action.sesbutton'                               |
# | (script will copied to /mnt/Autorun.inf)            |
# +-----------------------------------------------------+
 cp /tmp/etc/config/action.sesbutton /mnt/Autorun.inf
 else blink $Red;
fi;

# +-----------------------------------------------------+
# | Create /tmp/root/re-mount script.                   |
# | This script Re-Mount /mnt with 'noatime' parametr   |
# +-----------------------------------------------------+
echo "#!/bin/sh"                                                         > /tmp/root/re-mount;
echo "sledon()"                                                          >> /tmp/root/re-mount;
echo "{ gpio disable "\$1"; }"                                           >> /tmp/root/re-mount;
echo "sledoff()"                                                         >> /tmp/root/re-mount;
echo "{ gpio enable "\$1"; }"                                            >> /tmp/root/re-mount;
echo "umount -l /mnt;"                                                   >> /tmp/root/re-mount;
echo "if [ ! -d /mnt/Autorun.inf ];"                                     >> /tmp/root/re-mount;
echo " then mount -o noatime /dev/discs/disc0/"$NAS" /mnt"               >> /tmp/root/re-mount;
echo " else sledon "$Red"; usleep "$t"; sledoff "$Red";"                 >> /tmp/root/re-mount;
echo "fi;"                                                               >> /tmp/root/re-mount;
echo "if [ -d /opt/usr -a -d /jffs/lost+found -a -d /mnt/Autorun.inf ];" >> /tmp/root/re-mount;
echo " then sledon "$Blue"; sleep "$T"; sledoff "$Blue";"                >> /tmp/root/re-mount;
echo " else sledon "$Red"; sleep "$T"; sledoff "$Red";"                  >> /tmp/root/re-mount;
echo "fi;"                                                               >> /tmp/root/re-mount;

# +-----------------------------------------------------+
# | Make /tmp/root/re-mount eXecutable & Run it           |
# | In end-of action SES LED turn <On> at 2 s.          |
# | BLUE - if sucess ALL mount, RED - if not.           |
# +-----------------------------------------------------+
if [ -f /tmp/root/re-mount ];
 then chmod +x /tmp/root/re-mount;
# +-----------------------------------------------------+
# | Uncomment next command if you want check creating     |
# | of 're-mount'                                       |
# | (script will copied to /mnt/Autorun.inf)            |
# +-----------------------------------------------------+
 cp /tmp/root/re-mount /mnt/Autorun.inf;
 /tmp/root/re-mount&
 else blink $Red;
fi



Большое спасибо за скрипт (правда в нем есть ошибки такие как
"Else" с большой буквы и "SWAP" вместо "$SWAP" , зато так интересней Laughing что то типа квеста, не прошел красный, прошол синии Laughing )

Но одну ошибку я всетаки вычислить не могу(((
Если в консоли вбить reboot или из морды перезагружать то всеравно мигает два раза быстро красным и один потом синим (типа нормуль все)
Я уж весь скрипт излазил нихрена не нашел Crying or Very sad
Автор подскажи, так надо ?

А самое то главное я из этого скрипта трансмишн стартануть не могу (тоесть в одном варианте стартанул но почемуто как будто не из под пользователя root и он создал еше один свой конфиг в папке /opt/etc)

Из морды стартует как надо
Из консоли вручную тоже как надо а из скрипта run-on-mount и любого другого запущеного из run-on-mount нет((( зато потом если вручную запускать то да

Вообщем хочется чтоб трансмишн запускался при монтировании hdd без перезапуска каробочки и без ручного запуска

З.Ы. Кстати забыл написать что скрипт run-on-mount у мну только с 3 секундной задержкой (sleep 3) корректно отрабатывает (мож поможет кому)
WP_Hedgehog
DD-WRT User


Joined: 07 Apr 2009
Posts: 64

PostPosted: Wed Sep 09, 2009 7:39    Post subject: Reply with quote
m0t0dr0m, каюсь, грешен… Sad поскольку нуб-нубом :D

Я тут переписал стартовые скрипты нафиг, ввиду изменившихся условий. Могу выложить, если интерес есть.
Теперь у меня так:
отдельно стартовый run-on-mount;
отдельно стоповый action.sesbutton;
отдельно стартовый для сторонних приложений transmission – первый и единственный из них [пока];
отдельно скрипты для установки optware и transmission

По поводу запуска transmission'а - сделай стартовую задержку в ~25 секунд – будет тебе ЩАСЬЕ.
m0t0dr0m
DD-WRT Novice


Joined: 30 Aug 2009
Posts: 2

PostPosted: Sat Sep 12, 2009 7:22    Post subject: Reply with quote
WP_Hedgehog wrote:
m0t0dr0m, каюсь, грешен… Sad поскольку нуб-нубом :D

Я тут переписал стартовые скрипты нафиг, ввиду изменившихся условий. Могу выложить, если интерес есть.
Теперь у меня так:
отдельно стартовый run-on-mount;
отдельно стоповый action.sesbutton;
отдельно стартовый для сторонних приложений transmission – первый и единственный из них [пока];
отдельно скрипты для установки optware и transmission

По поводу запуска transmission'а - сделай стартовую задержку в ~25 секунд – будет тебе ЩАСЬЕ.


Интерес есть Smile и в виду этого попросил бы вас выложить скрипты для ознакомления Wink Заранее спасибо Smile
Goto page Previous  1, 2, 3, ... 10, 11, 12  Next Display posts from previous:    Page 2 of 12
Post new topic   Reply to topic    DD-WRT Forum Index -> Оборудование на основе Broadcom All times are GMT

Navigation

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum