Alap script

Fórumok

Alap script

Hozzászólások

Kedves Fórumozók!

Tudom, bugyuta a kérdés, de csak szenvedek. Hogyan lehet egy bash-script-ben a "logout" parancsot kiadni? Mindig azt írja, hogy használjam az "exit"-et, mert nem vagyok shellben. Persze az a program futtatását fejezi be. Szóval hogyan adhatom meg egy script végén, hogy most lépj ki a felhasználóval?

Próbáltad így:

`exit`

Így az exit-et mint külső parancsot értelmezi.

Köszi!

Látod, ezt ki sem próbáltam.

[quote:bb4664e7d3="szucs_t"]Köszi!

Látod, ezt ki sem próbáltam.

bár én most prószáltam és hamarabb járt a szám, mint a kezem és nállam nem mükszik.

Bocsi

A logout meg csak akkor jó, ha login shell-ben vagy, vagyis karakteres konzolba jelentkezel be és nem az X alatt egy terminál emulátorban.

Egyébként mit szeretnél megvalósítani pontosabban?

Hűű még egy gond.
sima konzol alatt sem megy.
Mivel ha megnyitsz egy konzolt és abban futtatod a scriptet, az forkol egy másik parancsértelmezőt, ami már nem az a parancsértelmező amiben bejelentkeztél, vagyis a logout sem jó.

Kissé tömören, de remélem érthető.

Én is megadtam a ` karaktert (Alt+7), de nem csinál semmit. Akkor mit tegyek?

Azt szeretném megtenni, hogy mondjuk írjon CD-t, és ha befejezte, logout-oljon. Hogy tudom megoldani script-ben, hogy lépjen ki a felhasználó a shellből?

[quote:f16e405c2d="szucs_t"]Én is megadtam a ` karaktert (Alt+7), de nem csinál semmit. Akkor mit tegyek?

Azt szeretném megtenni, hogy mondjuk írjon CD-t, és ha befejezte, logout-oljon. Hogy tudom megoldani script-ben, hogy lépjen ki a felhasználó a shellből?

Nem teljesen értem, hogy mi a problémád?

1. X -> xtrem (bash) akárhogyis logout, az xdm (gdm/kdm) session-ját kell lezárni (pl. killall fvwm :-)) vagy ami kell...

2. Console ->bash ->logout :-)

Zsiráf

U.i.: amugy ha a basht -l kapcsolóval indítod, akkor elhiszi hogy logout (no meg egy csomo egyeb dolog), de u.a. mintha exitet mondottál volna :-)

Kedves tetemes!

Azt akarom elérni, hogy a sokáig futó archiválást nem akarom megvárni, elindtom, aztán magára hagyom, hadd dolgozzon, majd ha befejezte, lépjen ki, mert nem szeretném, ha egész éjjel a root be lenne jelentkezve.

Tud valaki segteni? Vagy annyira nehéz ez a feladat, hogy lehetetlen egyszerűen, shell scriptben megoldani?

De hiszen pont ezt mondom!
Elindítod háttérben, vagy elindítod és háttérbe teszed, majd kilépsz.

Vagy script-et nem lehet háttérben futtatni, csak parancsot?

Mondjuk az is igaz, hogy eddig még csak egy parancsot a háttérben futtatva léptem ki, és az simán lefutott. Script-tel még nem próbáltam.

[quote:afb55d6158="Jedite"]Hűű még egy gond.
sima konzol alatt sem megy.
Mivel ha megnyitsz egy konzolt és abban futtatod a scriptet, az forkol egy másik parancsértelmezőt, ami már nem az a parancsértelmező amiben bejelentkeztél, vagyis a logout sem jó.
Kissé tömören, de remélem érthető.

ilyenkor './script' helyett '. script'et használunk :wink:
és exitre ki fog lépni

Köszi! Lehet futtatni scriptet háttérben, ha más nem, úgy teszek, de az lenne a legjobb, ha a script mondaná meg, hogy kilép. Pl. ha időzítéstben akarom beállítani a mentést, vagy bármi mást, akkor hogyan léphetek ki, illetve a scriptben a "logout" helyett, vagy azt megoldva mit kell beírni, ha bizonyos feltételek teljesülnek, akkor "logout"-oljon?

[quote:541bebab7c="szucs_t"]Köszi! Lehet futtatni scriptet háttérben, ha más nem, úgy teszek, de az lenne a legjobb, ha a script mondaná meg, hogy kilép. Pl. ha időzítéstben akarom beállítani a mentést, vagy bármi mást, akkor hogyan léphetek ki, illetve a scriptben a "logout" helyett, vagy azt megoldva mit kell beírni, ha bizonyos feltételek teljesülnek, akkor "logout"-oljon?

Ezt az utolsó pár sort nem igazán értem.
De ha pl cron-al időzíted, akkor szépen fut a script amíg nem végez és kész, nem kell logout stb...

pl:
10 23 * * * root cd /mnt/data/linux/distrib/debian; sh do_mirror.sh

a do_mirror.sh-ban semmi extra nincs csak a debmirror, meg még 1 sor a log file nevével amibe aztán irogatja szépen.

szerintem tetemes is valami hasonló megoldásra gondolt.

[quote:82803545b5="szucs_t"]
[code:1:82803545b5]
#! /bin/sh
tar -cvzf backup.tar.gz /1+ /boot + /dev + /etc + /home + /lib + /opt + /root + /sbin + /share + /tmp + /usr + /var
mkisofs -o backup.img -r -J /backup.tar.gz
cdrecord -data speed=4 -multi dev=0,0,0 backup.img
rm /backup.tar.gz
rm /backup.img
logout
[/code:1:82803545b5]

ebben az esetben kiszedném a logout sort, meg betenném cronban...persze ahogy a példában is írtam azért nem árt belépni a munka könyvtáradba ahova mented a backup.img-t meg a backup.tar.gz-t.

Lehet, hogy hamarabb beletörne a bicskám a logout kísérletbe, mint az előttem hozzászólóknak, ezért én maradnék a saját elképzelésemnél. Már csak azért is, mert egyelőre úgy tűnik, ez az egyetlen működőképes.

Nem igazán értelek, amikor azt mondod:

időzítéstben akarom beállítani a mentést

Cron-ból szeretnéd futtatni? Esetleg az at segítségével?

Mert hát akkor be se kell lépni. (ezért nem értem az idézett szöveget)

Ha a személyes véleményemre vagy kíváncsi, én még felügyelet nélkül sem hagynám ott root-ként bejelentkezve, ezért nem is engedném meg, hogy egészen a script lefutásáig nyitva legyen a root konzolja.

Nálam a cron futtatja a mentőscriptet, és amikor megkapom az e-mail-t, hogy megtörtént a mentés, akkor kicserélem a kazettát.

Értem, tso, és kösz! Valószínűleg hasonlóképpen fogok tenni. Azonban még mindig nem tudom, lehet-e shell scriptben "logout" parancsot kiadni, s ha igen, hogyan. Ha nem, hát nem, csak tudni szeretném.

Tetemes, teljesen jó megoldás, amit mondasz, csak arra szereték választ kapni, hogy lehet-e shell scriptben kiléptetni az aktuális felhasználót.

shell scriptben ugy lehet kiléptetni, h nem inditasz külön shellt, hanem a jelenlegiben futtatod (. foo ./foo helyett) és akkor exittel ki tudsz lépni :wink:

Hát sajnos ebben nem tudok segíteni.

--
Viszont ezzel a hozzászólással "kezdő fórumozó" lettem! 8) :D

Kösz vmiklos! így működik. Azonban mit tegyek, ha közben benne vagyok mondjuk az mc-ben, akkor csak abból lép ki, és a következő "exit" "nem csinál semmit". Az mc-ből is hogyan tudok kilépni, ha mondjuk elfelejtettem, hogy benne vagyok?

:-(

Van egy szript állomány, aminek a végére ha beírom a logout parancsot, nem zárja be a feélhasználót. Csak és kizárólag konzolban használom. Nincs grafikus felület.

Mondjuk így néz ki az állomány:

[code:1:61dd3f8b7f]
#! /bin/sh
tar -cvzf backup.tar.gz /1+ /boot + /dev + /etc + /home + /lib + /opt + /root + /sbin + /share + /tmp + /usr + /var
mkisofs -o backup.img -r -J /backup.tar.gz
cdrecord -data speed=4 -multi dev=0,0,0 backup.img
rm /backup.tar.gz
rm /backup.img
logout
[/code:1:61dd3f8b7f]

Mit írjak be konkrétan, a logout helyett?

Na most én nem értek itt valamit. Persze fontos, hogy mindent próbáljunk meg automatizálni (a legfontosabb mérnöki tulajdonság a lustaság :) ), de feltennék egy kérdést:

Ezt a bizonyos script-et automatizálva szeretnéd futtatni?

Gondolom nem, mert akkor nem akarnál benne logout-ot.

Ebben az esetben nem lehet a háttérben elindítani ezt a script-et? Aztán meg kilépsz magad, ha már úgyis a gép előtt vagy.

Remélem, megér ez az "ötlet" egy "hümmm"-öt! :)

Sőt, végül esetleg küldetsz vele egy levelet magadnak, hogy elkészült a cd írás.
(hogy másnap ne felejtsd el kivenni a cd-t)

En az ilyen jellegu dolgokat screenben szoktam futtatni.

screen
cdiras indit
CTRL-A-D

aztan hagy menjen.

Havonta 1x meg megologetem a bennmaradt bash-okat.
Vagy legkozelebb screen helyett screen -r -rel visszalepek.

Szerintem ez sokkal egyszerubb.

[quote:ffc1f9feb8="szucs_t"]Értem, tso, és kösz! Valószínűleg hasonlóképpen fogok tenni. Azonban még mindig nem tudom, lehet-e shell scriptben "logout" parancsot kiadni, s ha igen, hogyan. Ha nem, hát nem, csak tudni szeretném.

[code:1:ffc1f9feb8]bash -l[/code:1:ffc1f9feb8]
mint már fentebb mondtam, s elfogadja a logoutot...

Zsiráf