Egy shell két terminálon

Fórumok

Üdv,

Egy olyat szeretnék csinálni, hogy amikor elindult a rendszer, akkor ugye kapok egy shell-t miután beléptem,
na én azt szeretném, hogy ugyanez a shell legyen egy soros portra is "forwardolva".
Azaz ugyanazt lássam a sorosport-on mint a képernyőn.

Már gogliztam egy csomót, de csak azt sikerült megoldani, hogy induláskor a kernelnek átadom, hogy:
console=tty0 console=ttyS0
na most ez mindaddig jó amíg nem kapom meg a login promptot, mert ott már csak az egyikre küldi az információkat.

Előre is köszönök minden hozzászólást.

Hozzászólások

Elsőnek a screen jut eszembe, de soros porttal ez nem biztos, hogy megfelel neked.

cu-t keresed?

ha nem csak soros porton keresztül kellene, akkor screen + screen -x.

amit én szeretnék az az valójában, hogy van egy saját kis beágyazott rendszerem, ezen van egy rs232 port amire
ráaggattam az első soros terminált(ttyS0), valamint van a framebuffer eszközöm, amire ráaggattam az első terminált
(tty0), és azt szeretném, hogy a tty0-n is azt lássam mint a ttyS0-n.
ami megy is a kernel bootolása alatt, de mikor az befejeződik, akkor vége.

kipróbálom.

csak egy kis problémám van, hogy az egyik terminál felett nincs inputom.

mert ezt úgy kell elképzelni, hogy van egy pc meg van egy mondjuk hogy pda.
a pc csatlakozik a pda soros portjára.
és én azt szeretném elérni, hogy a pda-n is lássam azt amit a pc soros portján keresztül egy terminálba.

ezért gondolom, ha a pda-n, ahol nincs billentyűzetem bele teszem megfelelő paraméterekkel a screen-t egy
scriptbe, akkor azt érem el, mint ha begépelném.

akkor szerintem neked kellene a PC-re egy autologin, aminek a végén elindul a screen, a PDA-n meg le kellene futtatni a screen -x parancsot.

nem írtad milyen disztró, de Debian-on /etc/inittab -ba mehetne az egyik getty sor

1:2345:respawn:/sbin/getty 38400 tty1

helyett pl. ez:

1:2345:respawn:/sbin/getty -n -l /root/mylogin 38400 tty1

ahol a mylogin egy script:

#!/bin/sh
/bin/login -f username

.bash_profile-ba meg mehetne a screen parancs:

if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
screen
fi

nem próbáltam a screen-nel, lehet hülyeség, én ezt más futtatására használtam.

szerk.: ha viszont jó root joggal is, akkor mehetne persze szerintem az /etc/rc.local-ba is a screen parancs.

itt nincs distro, mert ezt én lapátoltam össze buildroot módosításával egy AVR32-re.

a screen dolog működik félig. azaz a terminálban a pc-n ami a (gtkterm) kiadom az ottani shellben (/dev/ttyS0), hogy `screen /dev/tty0` akkor minden bill leütés látszik a 'pda'-n.
csak az a baj, hogy ha lenyomom az enter-t, akkor nem történik az amit vártam. azaz hajtódik végre parancs.

az inittabomban most ez van :

# Run a shell on the first serial port. Comment out if you want a getty instead.
ttyS0::respawn:-/bin/sh

# terminál a framebufferen
tty0::respawn:-/bin/sh

*szerk*
itt nincsenek runlevel-ek mert a busybox nem támogatja a runlevel-ek használatát


exec script -a /dev/ttyS0 

vagy fordítva, nem igazán tudom; amelyik terminálra akarod küldeni, annak a neve a paraméter

A 'kibitz'-et nezd meg, ami tkp. egy expect-ben irott script.

Hello,

Jó a kérdés:) A tuti megoldást ugyan nem tudom, de pár dolog, ami eszembe jut:

telnet localhost | tee -a /dev/ttyS0
vagy
ssh localhost | tee -a /dev/ttyS0

Auth után ez szépen átvisz mindent a soros portra is.

bash | tee -a /dev/ttyS0

Itt nincs auth, de csak a shellből indított parancsok kimeneteit "klónozza" a soros portra.

http://vicerveza.homeunix.net/~viric/soft/tcpscript/tcpscript-0.2.tar.gz

Ezt a tcpscript programot elindítva kiül egy portra és forkol egy shellt. Egy másik terminálról a portra telnetelve monitorozhatjuk a forkolt shell stdio-ját. A forrása adhat további ötletet!

http://ace-host.stuart.id.au/russell/files/conspy/

Ez pedig, mint egy VNC, távolról belépünk a tty0-ba. Sajnos itt is be kell avatkozni a ttyS0-ról az indítás erejéig.