Adva van egy GPRS -en kommunikáló terminál szerűség. Mindez Debian 3.1 r8 - Sarge alapon. Nagyjából minden összeállt, de apró szépséghibáim vannak:
1. A pppd felállításához egy kis scriptet használok, amit a root crontab -ból hívok meg (próbáltam az interfaces -be is permanensen betenni, de ha nem tudja felépíteni a kapcsolatot addig nem lép tovább a rendszer, nincs ssh és konzol stb.) A crontab bejegyzés végén, beállítom hogy >lofile 2>&1 de a ppp kapcsolat építéskor mindíg kinyomja (az éppen aktuális konzolra), hogy "PPP Deflate Compression module registered ..." meg, hogy "PPP generic driver version 2.4.2". Miért lehet ez, hiszen mindenek el kellene mennie a log fájlba?
2. Van egy kis ncurses -es progi ami listázza a folyamatban lévő kommunikációt, ezt az indulásnál, az inittab -ból indítom "repawn" opcióval a rungetty segítségével úgy, hogy a tty3 -ra loginoljon - és a getty tty3 -as bejegyzést kivettem az inittab -ból. Szépen ott is van, mükszik de, arra nincs ötletem, hogy lehetne rávenni a rendszert hogy erre a konzolra lépjen? Vagyis miután bebootol és minden megy lépjen a monitor/billentyűzet a tty3 -as konzolra. Ha a tty1 -re loginelek, akkor jó, de azt nem szeretném bántani.
Minden ötlet jól jönne. Én egyenlőre kifogytam :(
- 1668 megtekintés
Hozzászólások
A pppd felállításához egy kis scriptet használok, amit a root crontab -ból hívok meg (próbáltam az interfaces -be is permanensen betenni, de ha nem tudja felépíteni a kapcsolatot addig nem lép tovább a rendszer, nincs ssh és konzol stb.)
/etc/init.d/networking-wan:
#! /bin/sh
# Manage WAN interface
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
[ -x /sbin/ifup ] || exit 0
function getopt () {
optname="$1"
opt="$(grep "^$optname=" /etc/network/options)"
if [ -n "$opt" ]; then
eval "$opt"
fi
}
case "$1" in
start|force-reload|restart)
getopt wan_if
if [ -n "$wan_if" ]; then
echo "Configuring WAN interface in the background..."
(
while true; do
status="$(ifup "$wan_if" 2>&1)"
if [ -z "$(echo "$status" | grep -s "Failed to bring up $wan_if.")" ]; then
break
fi
sleep 1
done
) &
fi
;;
stop)
;;
*)
echo "Usage: ${0##*/} {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0
/etc/network/options
vegere:
wan_if=ppp0
/etc/network/interfaces
-be:
# auto ppp0
iface ppp0 inet ppp
provider gprs
up [ -f /var/run/networking-wan.lock ] || { run-parts --arg=start /etc/rc-wan.d || true; }
Kell meg egy
update-rc.d networking-wan start 55 S .
is, es akkor a hatterben inditja el a WAN interfeszt, es miutan elindult, vegrehajtja az
/etc/rc-wan.d
-ben talalhato szkripteket (peldaul ntp szinkronizalas).
úgy, hogy a tty3 -ra loginoljon - és a getty tty3 -as bejegyzést kivettem az inittab -ból
Miert nem teszed a tty1-re a programodat?
- A hozzászóláshoz be kell jelentkezni
Kösz :D Tanulságos válasz.
Én ugyancsak a crontab -ba tettem be de a Debian -ban rendszeresített pon és poff scriptet használom egy sajátba beágyazva. (elszúrtam a crontab bejegyzést, így a pppd error csatornája nem ment a log fájlba hanem a konzolt rondította össze) Működik, nincs probléma - ráadásul nekem van egy fix ellenpontom és azt pingelve 5 percenként ellenőrzöm meg van -e még kapcsolat - ha nincs újra építem.
Jelenleg is a tty1 -re van téve, csak szerettem volna máshova tenni - amolyan bogaras vagyok, sose használom a tty1, mindíg a tty2 -től kezdek. Ráadásul a tty1 az ami mindenféle runlevelben megjelenik "2345".
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Fordítva kell írnod ezt: >lofile 2>&1 méghozzá előbb megy a 2 az 1-re és utána a lofile-be, tehát 2>&1 >lofile
--
falura elmegy, városban meg úgy sem nézik...
- A hozzászóláshoz be kell jelentkezni
tévedés, a
program >file 2>&1
a helyes forma. Talán próbáld ki.
- A hozzászóláshoz be kell jelentkezni
van egy fix ellenpontom és azt pingelve 5 percenként ellenőrzöm meg van -e még kapcsolat - ha nincs újra építem
A kovetkezo ppp opciok ugyanezt csinaljak:
persist
maxfail 0
holdoff 10
lcp-echo-interval 60
lcp-echo-failure 5
Jelenleg is a tty1 -re van téve, csak szerettem volna máshova tenni
/usr/local/bin/run-on-tty:
#! /bin/bash
if [ -c "$1" ]; then
TTY="$1"
elif [ -c "/dev/$1" ]; then
TTY="/dev/$1"
else
echo "Usage: ${0##*/} <tty> <program> [ <args> ... ]" > /dev/stderr
fi
shift
exec "$@" < "$TTY" &> "$TTY"
/etc/inittab-ba:
3:2345:respawn:/usr/local/bin/run-on-tty tty3 /a/te/programod -op -ciok
amolyan bogaras vagyok, sose használom a tty1, mindíg a tty2 -től kezdek.
En is, nekem is megvan, hogy melyik konzolt mire hasznalom... :-)
- A hozzászóláshoz be kell jelentkezni
Az a két üzenet szerintem a PPP-hez használt kernelmoduloktól származik, nem a scriptedtől, úgyhogy a syslog(-ng) beállításait nézd meg.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Csak idézet:
> elszúrtam a crontab bejegyzést, így a pppd error csatornája nem ment a > log fájlba hanem a konzolt rondította össze
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Attól még az ominózus sorok a kernelmodulok betöltésének a következményei... Azt meg nem a pppd stderr kimenetében fogja látni.
- A hozzászóláshoz be kell jelentkezni
Miután javítottam a crontab bejegyzésben (log.file 2>&1) azóta kitört a béke :)
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Az lehet, de hogy a modulban ott van az ominózus string, az egyszer biztos...:
en@gepem:/$ strings /lib/modules/2.6.28-19-generic/kernel/drivers/net/ppp_deflate.ko | grep "registered"
<6>PPP Deflate Compression module registered
en@gepem:/$
Ez a modul betöltésekor jelenik meg - próbáld ki az "rmmod ppp_deflate" parancs után a cron jobot futtatni.
- A hozzászóláshoz be kell jelentkezni
A második problémakörre a megoldás emlékeim szerint a chvt parancs.
- A hozzászóláshoz be kell jelentkezni