parancs futtatás induláskor

Fórumok

Azt szeretném hogy bejelentkezést követően
a rendszer (Ubuntu 16.04 GNOME X64) automatikusan futtasson egy parancs
ami az alábbi módon jelenik meg terminálban:

xyz@xyz-pc-5536:~$ sudo teamviewer --daemon stop
[sudo] password for xyz: xxxxxxxxxx
systemctl stop teamviewerd.service
xyz@xyz-pc-5536:~$ sudo teamviewer --daemon start
systemctl start teamviewerd.service
xyz@xyz-pc-5536:~$

Szóval valamilyen módon lefusson egy alkalmazás amiben benne van a
- sudo teamviewer --daemon stop
- root jelszó
- sudo teamviewer --daemon start

Nyilván ebben a sorrendben, és 1-2 másodperc ráhagyással,
hiszen amíg pl. nem a "systemctl stop teamviewerd.service" nem érkezik be
addig nem is érdemes ráindítani a "sudo teamviewer --daemon start" parancsra sem.

Megvalósítható ez, és ha igen hogyan?

Hozzászólások

Persze, hogy megvalósítható. Kezdetnek azt kellene tudni, milyen desktop környezetről van szó. Minden desktop környezetben lehet saját scriptet futtatni induláskor, abba meg azt írsz, amit nem szégyellsz. Aztán nem időzíteni kell, hanem egy ciklusban pollingolni, olvasgatni annak a daemonnak a státuszát - persze közben kell sleep, hogy ne vigyen 100 % CPU futásidőt -, s amikor aktív a daemonod, akkor kilépsz a ciklusból, s csinálod, ami kell. A jelszó izgalmasabb, mert kérdés, stdin-ről befogadja-e, de ha igen, a scriptben plain text formátumban visszamosolygó jelszó minimum biztonsági szakadék. Esetleg annyit lehet, hogy a scriptedre 0700-as jogot adsz a szokásos 0755 helyett. Vagy titkosítva tárolod a jelszót. Ez utóbbi macerásabb, de korrektebb egyben.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Először pár kérdés: Miért akarod leállítani, ha utána újra elindítod?
Miért nem jó ha alapból nem megy?
Miért akarod kézzel leállítani/indítani?

De hogy konstruktív is legyek: bár nem tudom mi a célod, de a sudo-nak van grafikus változata

gksudo

néven.

---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.

Minden indítás vagy újraindítás után az alábbi hibaüzenetet adja amikor be szeretnék jelentkezni:
https://s29.postimg.org/e6r1qdz53/Capture.png
"Sign In request failed! The server did not respond. Please try again."

Rengeteg fórumot olvastam mind a TeamViewer mind az Ubuntu oldalán
ahol jelezték ezt a hibát de a legjobb amit találtam az
az volt hogy "csak altattam a gépet akkor nem jelentkezett a probléma" és ez igaz is.

Amennyiben viszont leállítom és elindítom manuálisan a teamviewerd.service -t akkor bejelentkezik gond nélkül,
ezt szerettem volna automatizálni hogy ne mindig manuálisan szórakozzam végig bejelentkezés után

Aha. Akkor az első kérdés megválaszolva.
Ha alapból nem megy akkor sem jó? Lehet előbb indul, mint valami amire szüksége van.
Mondjuk én nem szeretem sudo-zni a progikat. Én inkább valami, root jogú szolgáltatás csoportjába tenném. Így nem fog kérni jelszót. (alapból is abban van) De ez az én bogaram.

Egyébként valami net bibit sejtek. Arra háklis. (dns, tűzfal, stb.)

---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.

Ezt produkálja ha automatikusan indul és akkor is ha bejelentkezés után én inditanám manuálisan.

A net dolgot azért lőttem ki mert 3 megyében 3 különböző szolgáltatónál is ez volt (laptop, viszem magammal)

debian 8 és 9 alatt is szépen ment,
viszont ubuntu 16.04 alatt rengeteg helyen olvastam ezt a hibajelenséget és igazából sehol nem is találtam rá konkrét megoldást, valahol az ubuntu kavar be neki.

Ezekkel az a baj, hogy nem tudnak kapcsolódni az amúgy kvázi szabvánnyá vált TW-hez.
A TW-nek van egy elvitathatatlan érdeme: szigorú tűzfal mögül is működik.
Amúgy tényleg egy kalap szar a linuxos változat. De legalább a világ szinte összes wines gépéhez lehet vele kapcsolódni.

---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.

nem csak win-hez, arról kezelem a telefonokat, tableteket, másik gépet ha kell,legyen az win vagy linux, ha a laptopom otthon bekapcsolva hagyom a tabetről elérem.
távolságtól és mindentől függetlenül,
és ami a legfontosabb,
különösebb tudás nélkül, mindössze annyi kell telepítem a programot és bejelentkezem egy fiókba,
asszonynak is 5 perc alatt elmagyaráztam hogyan és mit kell csinálni ha használni akarja és
erre jelenleg nincs alternativa.

- /etc/sudoers -ben szépen állítsd be, hogy ne kelljen a teamviewer-hez jelszót is megadni az adott usernek (egyébként sem a root-ét kell, hanem a userét, akit root joggal szeretnél felruházni a sudo futtatásával)

- írsz egy kb három soros scriptet, amiben a leállítás, indítás van plusz köztük egy sleep 2 pl a várakozásra

- megkeresed gnome-ban mi az 'autostart', ami login után futtat dolgokat és oda felveszed a scriptedet. Linux Mint Cinnamon felülettel, magyarul ez az 'indítópult' a rendszerbeállítások alatt. Valószínű, hogy valami hasonló Gnome alatt is

Az egyszerű megvalósítástól függetlenül ez eléggé tákolásnak tűnik, tényleg érdekes lenne az ok.

upd:
ha meg nem a user loginhoz akarod kötni ezt, hanem a rendszer indításhoz, az követően, akkor a /etc/rc.local -ba vedd fel a scriptedet, vagy akár csak a három sort bele

A script egy kedzdetben üres 'txt' file, ha normálisan akarod, akkor az első sora egy bash-es vagy sh-s shebang (nézd meg a wikit pl), utána a leállító sor, egy 'sleep 2', negyedikbe az indító sor. Ennyi. Praktikusan chmod-dal adsz neki futtatási jogot utána.

Upd: de ehhez kell, hogy a sudoers -be beállítsd, hogy ne kérjen pass-t NOPASSWD témára keress sudo ügyben, máshogy egyszerűen nem tudod megadni neki a jelszót tudtommal, ha scriptből futtatod a sudo-t. De lehet kijavítanak a profibbak.

Egyre erősebb a gyanúm, hogy egy rendszer szintű szolgáltatást akar felhasználói loginhoz kötötten sima felhasználóként böködni, ami ugyan nem lehetetlen, csak nem odavaló, felesleges bonyolítás, ronda megoldás, s a biztonsága is megkérdőjelezhető.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Szerintem a sudo teamviewer --daemon stop valójában egy systemctl stop teamviewerd.service parancsot hajt végre. Mi lenne, ha kulturáltan eleve a systemd-t használnád, s ha valami panaszod van, azt egy unit file-ban mesélnéd el a systemd-nek? Például a systemd tud olyat, hogy ha sikertelen a daemon indítása, akkor vár egy általad meghatározott időt, majd megpróbálja újra elindítani a daemon-t. Nem kell ehhez semmilyen script, sokkal inkább művelődj innen:

https://www.freedesktop.org/software/systemd/man/systemd.unit.html

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE