Üdv!
Egy olyan megoldás érdekelne, amivel el tudnám érni, hogy a bootolás során elinduló daemonok közül kettőt le lehessen tiltani. Konkrétan az adsl és az openntpd daemonokra gondolok, mivel ezeket csak az itthoni adsl netre kapcsolódva használom, amikor tehát nem itthon kapcsolom be a notebookom, feleslegesen kell várnom a kettő indulási próbálkozása miatt majdnem egy percet.
Azt szeretném elérni, hogy bootoláskor tegyen fel egy kérdést, hogy ez a két daemon elinduljon-e, és mondjuk 3 másodperc múlva lépjen tovább úgy, hogy a default beállítás az legyen, hogy induljanak el.
Kivitelezhető ez valahogy?
Megjegyzem nem vagyok járatos a Linux alapú rendszerek felépítésében rendszerszinten, a bootolás pontos folyamatát se ismerem, de gondolom valahogy ez is kivitelezhető, a kérdés, hogy hogyan, és hogy én meg tudnám-e valósítani mélyrehatóbb ismeretek nélkül, leírások segítségével.
Keresgéltem már e témában, egyelőre úgy tűnik, hogy egy egyedi init script segítségével el tudnám érni ezt. Ahogy néztem a /etc/rc.d/adsl script lényegében nem más, mint egy bash script. Ebben az esetben tehát kivitelezhető lenne az, hogy úgy módosítsam ezt (biztonsági másolat készítése után persze), hogy feltegye a kérdést, hogy elindítom vagy nem, "y" vagy "n", és ha nem nyomok semmit, 3 másodperc múlva végrehajtsa az indítását a daemonnak? Illetve talán jobb lenne más névvel elmenteni, hogy mondjuk adslboot, és akkor ez kerülne a daemonok közé a /etc/rc.conf fájlba, hogy utólag futtatva a /etc/rc.d/adsl scriptet ne kérdezze meg, hogy tényleg le akarom-e futtatni.
Mit gondoltok, kivitelezhető? Ha igen, hogy?
Mondjuk ez egy bash script, szóval nyilván ki tudnám íratni a kérdést, ez talán még nem is okozna gondot. Ezután mondjuk be kéne kérni egy karaktert, ami y vagy n lehet csak, ellenkező esetben újbóli kérés, és egy elágazásba betenni az adsl script többi részét az "y" részhez, az "n" részhez pedig csak egy kiíratás, hogy "Skipping adsl daemon" vagy valami ilyesmi. Lényegében az "y" nem is kéne, csak az "n", hisz ha itthon vagyok, nem figyelem feltétlenül a bootolás közbeni képernyőt, úgyis tudom mit ír ki, elég lenne az "n" része a dolognak, hogy kimaradjon a daemon és kész, egy másodperc az egész, nem kell várnom a felesleges kapcsolódási kísérletre.
De hogy lehetne ezt megoldani, ha lehetséges ilyenkor? Illetve amit nem tudnék kivitelezni az a számlálás, hogy x másodperc múlva adott értékkel fut le a script.
- 1472 megtekintés
Hozzászólások
Valami ilyesmire gondoltál?
#!/bin/bash
echo -n "Induljon el az ADSL? [y]> "
read -t 3 choice
if [ "$choice" = "n" ]
then
echo "Nem inditom lepek tovabb"
else
echo "Indul a script"
fi
Sajnos nem sok fogalmam van a shell scriptekről, majd nyáron szeretnék elkezdeni foglalkozni velük. Minden esetre gyakoroltam egy kicsit legalább, ha mégse ez kellett volna akkor mond, hogy mi nem jó és még próbálom alakítani...
Esetleg ha kicsit elegánsabbra akarod akkor fogod és az egész részt ami benne van most az adsl deamonban bele rakod egy függvénybe, majd mögé csapod ezt a részt amit én írtam és az else ágban meghívod a függvényt.
btw: Gentoo alatt ez úgy van hogy létrehozol a default melle egy saját runlevelet bele pakolod ami kell, aztán csinálsz egy bejegyzést a grubba és indításkor azt választod amelyiket akarod és azok indulnak el amiket te beledobáltál a sajátodba, vagy indul a defaultal.. :)
- A hozzászóláshoz be kell jelentkezni
Ezt sikerült összehozni némi gondolkodás és keresgélés után:
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
echo -e "\033[1;37m"
KP="n"
read -s -n1 -p "Do I skip the start of adsl and openntpd daemons? (y/n) " -t 3 KP
echo -e "\033[m"
if [ "$KP" != "y" ];
then
-
- case "$1" in
-
start)
-
stat_busy "Starting ADSL Connection"
/usr/sbin/pppoe-start &>/dev/null
if [ $? -gt 0 ]; then- stat_fail
else
-
add_daemon adsl
stat_done
fi
;;
stop)
-
stat_busy "Stopping ADSL Connection"
/usr/sbin/pppoe-stop &>/dev/null
if [ $? -gt 0 ]; then- stat_fail
else
-
rm_daemon adsl
stat_done
fi
;;
restart)
-
$0 stop
sleep 1
$0 start
;;
*)
- echo "usage: $0 {start|stop|restart}"
esac
/etc/rc.d/openntpd start
else
fi
exit 0
Ezzel így megoldottam azt is, hogy az openntpd csak akkor induljon el, ha van adsl kapcsolat, illetve legalábbis ha kéne lennie.
Ezt az egészet pedig beraktam egy /etc/rc.d/boottimeadsl fájlba, majd beírtam a daemonok közé a /etc/rc.conf fájlban a boottimeadsl-t az adsl és az openntpd helyett. Eddig nem is gondoltam, hogy ez lehetséges.
sunmao: a függvényes megoldás jól hangzik, erről jutott eszembe, hogy még ez se kell, hanem meghívhatom az adsl scriptet is ahelyett, hogy beírnám, épp úgy, mint az openntpd-t, úgyhogy át is írtam olyanra:
#!/bin/bash
echo -e "\033[1;37m"
KP="n"
read -s -n1 -p "Do I skip the start of adsl and openntpd daemons? (y/n) " -t 3 KP
echo -e "\033[m"
if [ "$KP" != "y" ];
then
-
/etc/rc.d/adsl start
/etc/rc.d/openntpd start
else
- echo Skipped...
fi
exit 0
- A hozzászóláshoz be kell jelentkezni
Nem triviális a dolog, de a networkmanager dispatcher részével meg lehet oldani a dolgot minden kérdezősködés nélkül.
Eleve semmi keresnivalója pl az openntpd-nek az rc.conf-beli daemonok között.
- A hozzászóláshoz be kell jelentkezni
Azért van ott mindkettő, mert bármilyen network manager csak az X elindulása után töltődik be és csatlakozik, ami kifejezetten rossz, mert a Thunderbird is ugyan ezt teszi, ergo azt kéne késleltetnem, hogy ne írogassa ki, hogy nem tud kapcsolódni és kelljen miatta újraindítani, az openntpd pedig azért került be, mert Windows is van a gépen, mindkét rendszer UTC szerint állítja az időt és a Windows valami perverz módon másképp állítja be a rendszeridőt (vagy valami ilyesmi, ismert probléma ez, lehet az csak localtime-ot tud állítani és általában local time-ra vannak miatta a Linux disztribúciók állítva, de én jobb szeretem, ha mindig szinkronizálva van a dátum és az idő, ami mindig pontos, illetve ne kelljen óraátállításnál nekem átállítgatni [tudom, hogy évente csak két alkalom, de minek van az embernek jól konfigurálható rendszere, ha ilyesmit nem tud megoldani?]). Szóval ezzel tudom elérni, hogy ne másfél órás eltérés legyen az idő megjelenítésében. Megjegyzem nem én találtam ki, hogy a daemonok közt a helye: http://wiki.archlinux.org/index.php/Network_Time_Protocol Már csak emiatt is kell az ADSL a daemonok közé, mert addig nincs net.
...Ja hogy nem olyan network manager. Most kerestem rá, hogy mi ez, látom ez is a daemonok közt indul, vagyis nem az, amire én gondoltam, illetve az, csak rosszul értelmeztem. Lehet, hogy megoldhatóbb lenne, de volt épp elég gondom amikor elkezdtem használni a rendszert az internet beállításával, eltartott egy ideig, amire megtanultam pontosan, hogy mi kell hozzá és hogy az hogy működik (így utólag nagyon egyszerű beállítani, nem is értem, hogy lehettek gondjaim vele), most ez így jó, ADSL kapcsolatra van csak szükségem, mást nem is használok, sosincs másik vezetékes hálózatra csatlakoztatva, WLAN-ra meg jó a WICD, mobilnetre meg ott az Android SDK adb-je.
- A hozzászóláshoz be kell jelentkezni