Sziasztok!
Írogatok pár éve (lényegében magamnak) egy hálózat monitorozó/menedzselő/dokumentáló programot ( https://github.com/csikfer/lanview2 ). Ehhez legutóbb egy definiálható szerszámkészletet adtam, pl. a switch-re rájelentkezés CLI vagy Web (ami van). Egy (minimális) böngésző tab megnyitása viszonylag egyszerű volt Qt-ban, de a Terminál vagy SSH ablak megnyitására nem találtam megoldást (Qt környezet, lényeges a multiplatform Windows + Linux). Így maradt külső program hívása. Windows alatt a telnet vagy ssh-hoz a putty-ra esett a választás. Itt van egy olyan fura jelenség, hogy a putty (A QProcess::startDetached(...) -el indítva) három (néha kettő) példányban indul el. Ha szinkron indítom (várok a befejezésre), akkor csak egy példányban. Linux alatt nincs ilyen jelenség, és persze putty sem. Kipróbáltam más program hívását is, pl. a zenmap (nmap Windows verzió, GUI-val), az csak egy példányban indul. Ez egy feature a putty-ban, vagy én maradtam le valamiről?
Próbáltam nem a startDetached() -el indítani programot, és utána leválasztani, de ezt a Qt nem támogatja, a meghekkelése ugyan egyszerű, csak nem működik (10 sec után kilép a putty).
Igazándiból az lenne jó, ha a GUI egy tab-jában (QTabWidget) tudnák indítani egy terminált, vagy ssh-t.
- 690 megtekintés
Hozzászólások
valami libbel nem lehet megoldni? pl. libssh-t nem lehet hozzaforditani? vagy az nem ilyenre valo?
neked aztan fura humorod van...
- A hozzászóláshoz be kell jelentkezni
A Qt-hez találtam egy QTerminalWidget osztályt, ami ezer példányban elforkolva, nem Windows kompatibilis, és combos függőségei vannak. Van valami Windows portja, de azt meg csak hiányosan tudtam letölteni, zéró dokumentációval. Se időmilliomos, se mazochista nem vagyok.
Nem Qt-s könyvtárral nem próbálkoztam még. Nem tudom, hogy egy libssh hogyan fog egy QWidget-tel összedolgozni.
- A hozzászóláshoz be kell jelentkezni
Mostanában a windozban is van ssh. Ne szopj a puttyal ha nem muszáj.
- A hozzászóláshoz be kell jelentkezni
nem tudjuk hanyas win. lehet hogy mennie kell regebbivel is
neked aztan fura humorod van...
- A hozzászóláshoz be kell jelentkezni
Win 10 van csak, legalább ez nem gond. Sokadik Google találat, a Win 10-ben tényleg van már ssh (fantasztikus!), persze konzol, azt pedig külön cifrázni kell. A putty annyiban lett volna jó, hogy GUI, jól paraméterezhető, tud telnet-et is, eddig nem volt vele probléma. Ez a három példányban indulás pedig elég meglepő feature.
Nem szeretek Windows programokat vadászni. Sok a találat és sok szemét, nem megbízható forrás.
Halkan megjegyzem, ha eddig multiplatformos programfejlesztésre adtam a fejem, akkor szinte mindig a Windows-al kellet szívni. Legutóbb egy WLC-Qt könyvtárat használó programom lett Windows alatt lefordíthatatlan, mert a VLC SDK nincs benne az új VLC-be, letölteni sem lehet, csak forrásból lefordítani az egész VLC-t, azt pedig a függőségeivel fordítsa le az akinek hat anyja van. Linux alatt apt-get -tel letöltöm ami kell, működik, és az automatikus frissítés sem cseszi szét az egészet, akkor sem ha van frissítés. Ehhez a projekthez pedig a net-snmp -t nem tudom lefordítani Windows alá, bináris nincs, a letölthető forrás ezer éves. Az látszik, hogy valakik, valamikor megcsinálták a Windows portot, de dokumentálni már nem volt kedvük. Karbantartani pedig nem kell a net-snmp -t mert már végleges és tökéletes is (na ez speciel nem a Windows sara, és úgy általában az SNMP-vel is csak szívni lehet).
- A hozzászóláshoz be kell jelentkezni
Én ezt a libet használtam mikor ssh-n kellett toszogatni valami motorvezérlőt:
Ment Linux és Win alatt is.
- A hozzászóláshoz be kell jelentkezni
Ezzel nem vagyok előrébb. Ehhez kellene egy terminál widget is, és az a nagyobb falat, nem az ssh.
- A hozzászóláshoz be kell jelentkezni
Nem annyi példányban indul el véletlenül, mint ahány profil van tárolva PuTTY-ban? Mi a parancssor, amit végrehajtatsz?
- A hozzászóláshoz be kell jelentkezni
A kiadott parancs, telnet kliensként:
putty -telnet <ip>
Nincsenek tárolt profilok. De kipróbáltam egy Win.Domain-en kívüli virtuális géppel, frissen installált putty-al és ott csak egy példány indul. A "hárompéldányos" Windows (Server 2012) egy terminál szerver. És most esett le a tantusz, ez nem is a Windows 10 szerver változata, így ssh sincs benne még.
- A hozzászóláshoz be kell jelentkezni
"Linux alatt nincs ilyen jelenség, és persze putty sem."
- emlekeim szerint van putty linuxra is.
"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség
- A hozzászóláshoz be kell jelentkezni
Van ám! :)
- A hozzászóláshoz be kell jelentkezni
Ha nem C++ lenne, akkor azt mondanám, hogy érdemes lenne debuggolni. Mondjuk megállni a CreateProcess című függvényen és számolni a hívásokat.
- A hozzászóláshoz be kell jelentkezni
Bennem is felmerült, hogy valami idióta hiba miatt hívom többször, de nem. Más programot nem hív háromszor, sőt, a putty-ot sem egy másik gépen.
A program tele van nyomkövetési üzenetekkel, az alapján is látszódna, ha többször csinálnék bármit.
- A hozzászóláshoz be kell jelentkezni
Mármint a Qt-ra értettem. Mivel Qrva nagy, és C++, bármit el lehet képzelni.
- A hozzászóláshoz be kell jelentkezni
Ez a tipikus esete annak, amikor az ember választ a projekt elején technológiát meg architektúrát, az aktuális tudása meg az állapotok alapján, aztán menet közben derülnek ki dolgok.
Pl. amióta nézem ezt a projektedet, azóta nem értem a vastag klienst meg a Qt-t. Meg persze az architektúrát sem, de nyilván ebben az is vastagon benne van nálam, hogy én részt vettem 15-20+ éve egy bizonyos típusú hálózati eszközöket menedzselő szoftverprojektben, és még emlékszem, hogy milyen döntéseket kellett meghozni, és mik voltak a szempontok, és aztán miből lett később gond és mi volt baromi jó választásunk.
Szóval ha ma megkérdeznél, hogy milyen stackre csinálnék hálózati monitorozást, az tuti, hogy a következő technológiák nem lennének benne:
- vastag kliens (vs webböngésző), vagy ha mindenképpen kell valami vastagkliensszerűség akkor az biztosan egy standard webböngésző motorra épülne
- Windows bármi másra, mint megjelenítésre, ami ugye az előző alapján egy szál web böngésző (vagy a motorjára épülő valami) lenne
- net-snmp (anno 2 hónapig néztük, hogy mit lehetne ezzel kezdeni, aztán újraimplementáltam a nekünk kellő részeket egy hét alatt - pár képernyőnyi kód volt az a kód, ami kellett belőle, a MIB parser volt az egyetlen, amit meghagytunk as-is)
- a gyűjtött adatok RBDMS sorokban egyesével tárolva (baromira drága I/O-ban, nem skálázódik értelmesen)
- monolit, single-machine, böhöm izék (vs elosztott, skálázható, microservice-alapú architektúra, újrahasznosítva a mások által megírt open-source dolgokat: Prometheus, Grafana, és haverjaik)
- (le)fordított nyelvben megírt komplett cucc (vs moduláris, script típusú nyelvben custom kóddal bővíhető architektúra)
- A hozzászóláshoz be kell jelentkezni
Bizonyára van igazság abban amit írsz. De jó pár állításod egyszerűen nem igaz a projektre. Nem tudom mennyi időt szántál rá, de tartok tőle, hogy jóval kevesebbet, mint ami a projekt teljes megértéséhez, vagy átlátásához szükséges. Az utolsó állítás alapján a dokumentációt sem olvastad el.
A vastag kliens, az hogy került ide?
- A hozzászóláshoz be kell jelentkezni
De jó pár állításod egyszerűen nem igaz a projektre
Egyáltalán nem azért írtam ezeket, mert a projektedre jellemzőek kivétel nélkül. Ezek azok a tanulságok, amiket az elmúlt 20 év alatt összeszedtem. Egy része nyilván igaz a projektedre, mások "csak" olyan zsákutcák, amikbe a konkurens open-source projektek masíroztak be rendre.
Ami biztosan igaz rá, hogy nem böngésző(motor)t használsz felületnek. Ebből szerintem rengeteg sok meló, és egy pár limitáció adódik. Böngészőmotorral pl. lehetne olyan megoldásokat használni, mint a Guacamole projekt SSH terminálja. És akkor mehetne a szerveren keresztül proxyzva a terminálforgalom, és nem kéne kötelezően a kliens PC-nek direkt hozzáférést adni a hálózati eszközökhöz.
jóval kevesebbet, mint ami a projekt teljes megértéséhez, vagy átlátásához szükséges
Ez egészen biztosan így van. De ennek igen erős gátja az, amit eddig láttam benne. Bocs.
A vastag kliens, az hogy került ide?
Idéznék a doksidból: "A GUI induláskor, ha problémát észlel, nem tud csatlakozni az adatbázishoz, vagy annak a verziója nem megfelelő, akkor hiba üzenetet ad, és egy alap menüt jelenít meg a setup-al."
Na nálam az a GUI, ami az adatbázishoz akar csatlakozni, az erősen vastag kliens. A GUI-nak emiatt szüksége van az adatbázis jelszóra. És ebből a felállásból nagyon nehéz bármi mást kihozni, mint kooperatív multi-userkedést, ahol kb. minden felhasználó admin.
- A hozzászóláshoz be kell jelentkezni
Hát, igen, jó pár nyílt-forrású rendszer jellemzője, hogy nem egy "tudományosan" összeállított projekt alkotása, hanem egy igényből fakad, ami nem társul a mindentudáshoz. Terhelve azzal, hogy jelentős kapacitáshiánnyal küzd. Hallatlan előnyük ugyanakkor, hogy sokszor azok írják/tervezik, akik használják. Nem egy menedzser határozza meg, mi legyen benne, mit tudjon, hogy eladja magát, a másik menedzsernek.
Ennek a projektnek volt egy előző verziója, az PHP volt, jóval kevesebb SQL tapasztalattal (nem mintha most már SQL guru lennék). Ez részben azért lett Qt és C++, mert ahhoz jobban értek, és ki akartam próbálni egy programozási stílust, aminek kezdeményeit már más projektekben kipróbáltam. És erre a programra volt igényem nekem, mivel rendszergazda vagyok főállásban egy egyetemen. Sőt, meggyőződésem, hogy a többi karnak is lenne erre igénye, csak a rektorátusnak nem tetszik, hogy az egész egy tizedrangú beosztottól függ. Rettegnek attól, hogy rajtuk kívül esetleg valaki fontossá válik (ezt nem szó szerint nem így, de közölték is), és nem kirúgható azonnal (ezt csak én következtettem ki).
A közvetlen adatbázis kapcsolatot én is problémának tartom. De a közvetlen kapcsolat a lényege annak, amit ki akartam próbálni, programozás technikailag, ha ingyen dolgozunk, nem árt egy kis plusz motiváció. Ugyanakkor, ez nem egy olyan program, amit mindenkinek a feneke alá tolunk, jobbára azok használják, akiknek amúgy is rendszergazdai joguk van. A program szolgáltatásai is inkább egy kissé kaotikus egyetemi hálózathoz igazítottak, nem pedig egy paranoiás, minden a helyén van rendszerhez. Utóbbiakat akkor is lebeszélném a használatáról, ha esetleg eszükbe jutna ez az őrültség. Egy rosszul dokumentált, kissé kaotikus, és kellően nagy egyetemi hálózaton viszont nagyon jól használható, mivel részben helyettesíti a dokumentációt, ill. bizonyos szempontból több is annál (és ez a lényege, nem a Nagiost akartam újra írni).
Végül idéznék egy régebben látott plakátról: "Fikázni könnyű, alkotni nehéz.". Szerintem sommás véleményt mondani valamiről, amit nem ismerünk kellő mélységben, az erősen vitatható tevékenység, akkor is, ha van magyarázatunk.
Ui.: köszi az ötletet, a Guacamole projekt SSH terminálját megnézem, kicsit máshogy, de használható lehet, pont olyan megjelenésben, ahogyan akartam.
- A hozzászóláshoz be kell jelentkezni
Az eg kek, a fu zold, a Windows hulye.
Szerintem ne pazarolj a feltetlen sziksegesnel tobb idot egy olyan rendszer uriemberkent valo hasznalatara, amely nem szolgalt ra a bizalmadra.
Keruld meg a problemat, peldaul indits el a programodbol egy .bat allomanyt, ami a hatterben elinditja a putty-ot. A windows meg bekaphatja. :-)
- A hozzászóláshoz be kell jelentkezni
-1: amikor programozol, főleg ilyen alap dolgot, akkor ugyan van némi különbség, de alig valami. Az OS függő kódom alig 50-60 sor egy igazán nagy projektben, ahol minden is van. Mondjuk process-ek tényleg mások, mert nem fork van, de őszintén szólva a napi dolgokhoz a Windows-os CreateProcess nekem jobban kézre áll.
- A hozzászóláshoz be kell jelentkezni
Nem hinném, hogy a Windows lehülyézése előbbre vinne bármit is. Személy szerint én is utálom, jelentősen több szívni való van vele. Itt most, tartok tőle, hogy nem a Windows a hunyó. Ez inkább a putty-ban valami furcsaság.
- A hozzászóláshoz be kell jelentkezni
Nem vagyok az a veresszaju windows hater aki Windows lepket majszolo Tuxos poloban maszkal a varosban, de a Windows lehulyezese igenis hasznos.
Regen amikor ifju voltam es boho, es volt idom mindenre, akkor a hulye rendszerek problemait hajlamos voltam megjavitani, de mostanra mar beletorodtem, hogy kar az idomert. Linux alatt az ember megkeresi a hibat, megerti miert van es kijavitja, mert tiszteli a rendszert es a letrehozoit.
Windows alatt en mar elvesztettem az erdeklodesemet, nem akarom megerteni, csak annyit hasznalom amennyit muszaj, mert csak felidegel hogy mennyivel gagyibb pedig meg fizettem is erte.
Szerencsere nem fejlesztek Windows ala, amikor pedig megis, akkor Python es joccakat. A QT kornyezetet nem ismerem, nem tudom, hogy a processz inditas kornyeken milyen taposoaknak vannak a windowsos portjaban. En tutira egy wrapper .bat file hasznalataval kerulnem ki a problemat, tudom, nem elegans, de mint irtam, Windows alatt en mar nem akarok elegans lenni. Minek? Hogy eltorjon a kovetkezo frissiteskor amikor megint atfirkaljak az UAC -ot? Annyit nem er a dolog szamomra.
En hasznalok .bat -ot arra, hogy a desktoprol egy duplakattal elindithassak 6 darab ssh konzolt, mert van egy olyan periodikus munkam aminel ugyanarra a 6 gepre kell bemenni. Ezek az inditasok mukodnek putty session betoltessel es ip-re valo hivatkozassal is, es mindegyik csak egy peldanyban nyilik ahogy kell, az indito .bat ablaka pedig egybol bezarul ahogy elinditotta az utolsot is.
Errol tudom, hogy mukodik, ezert tanacsoltam.
De megertelek, ha elegansabban szeretned megoldani, sot, tisztellek erte, hogy workaround nelkuli tisztesseges kodot akarsz a kezedbol kiadni!
- A hozzászóláshoz be kell jelentkezni
A Qt-n kivul esetleg valami mas API-hivas? Linux alatt sem biztos hogy a Qt::WhateverObfuscatedLayer::CreateSomeProcessSomewhere(...)-rel hanem siman fork() + execve() kombinacioval probalkoznek eloszor :)
- A hozzászóláshoz be kell jelentkezni