Reklama
Nepřihlášený uživatel | Zaregistrovat se
 

Téma:

Počítače a Internet

Spravuje:

sovic

Může vás zajímat



Reklama




hacker_ systemd free  Go
Ok, už to vidím, zapomněl jsem na definici funkce `todo`, která byla jinde, sorry:
me@here:~/tmp/hkmaly$ ls -la
celkem 12
drwxr-xr-x 2 me   me   4096 srp 24 17:51 .
drwxr-xr-x 5 me   me   4096 srp 24 17:51 ..
-rw-r--r-- 1 me   me    453 srp 24 17:51 pokus.go
me@here:~/tmp/hkmaly$ cat pokus.go 
package main

import (
	"io"
	"net"
)

func main() {
	ln, err := net.Listen("tcp", ":8000")
	if err != nil {
		panic(todo(""))
	}

	for {
		conn, err := ln.Accept()
		if err != nil {
			panic(todo(""))
		}

		go handleConnection(conn)
	}
}

func handleConnection(outer net.Conn) {
	defer outer.Close()
	inner, err := net.Dial("tcp", ":7000")
	if err != nil {
		panic(todo(""))
	}

	defer inner.Close()
	go io.Copy(outer, inner)
	io.Copy(inner, outer)
}
me@here:~/tmp/hkmaly$ go mod init example.com/hkmaly
go: creating new go.mod: module example.com/hkmaly
go: to add module requirements and sums:
	go mod tidy
me@here:~/tmp/hkmaly$ go mod tidy
me@here:~/tmp/hkmaly$ go build
# example.com/hkmaly
./pokus.go:11:9: undefined: todo
./pokus.go:17:10: undefined: todo
./pokus.go:28:9: undefined: todo
me@here:~/tmp/hkmaly$ sed -i 's/todo("")/"TODO"/' pokus.go 
me@here:~/tmp/hkmaly$ go build
me@here:~/tmp/hkmaly$ ls -l
celkem 2176
-rw-r--r-- 1 me   me        35 srp 24 17:52 go.mod
-rwxr-xr-x 1 me   me   2218344 srp 24 17:53 hkmaly
-rw-r--r-- 1 me   me       447 srp 24 17:53 pokus.go
me@here:~/tmp/hkmaly$ go version
go version go1.17 linux/amd64
me@here:~/tmp/hkmaly$ file hkmaly 
hkmaly: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=R2BdALCpgq0Ge7K6x5QA/YkJlZCQfzO0gzy9fKYK1/WAAop6rIas8CH00m7pcH/0e4BZ-7NH_p1hprgLBpD, not stripped
me@here:~/tmp/hkmaly$ 
hkmaly - Slava pomlcky -  .
Vzdyt jsem rikal to co jsi posilal:
package main import ( "io" "net" ) func main() { ln, err := net.Listen("tcp", ":8000") if err != nil { panic(todo("")) } for { conn, err := ln.Accept() if err != nil { panic(todo("")) } go handleConnection(conn) } } func handleConnection(outer net.Conn) { defer outer.Close() inner, err := net.Dial("tcp", ":7000") if err != nil { panic(todo("")) } defer inner.Close() go io.Copy(outer, inner) io.Copy(inner, outer) }
hacker_ systemd free  Go
Tak ještě jednou pls pošli co jsi kompiloval ($cat pokus.go) a který příkaz jsi použil, že ti to nedungovalo. Já to už po dovolené s odstupem teď nějak nedávám dohromady. Pokud se mi podaří zreprodukovat ten fail, tak snad budu vědět, v čem je problém.
Dikes.
Mám je doma asi rok, předtím jely šest let nepřetržitého provozu na jedné poliklinice v různých podmínkách (rozhodně ne klimatizovaná serverovna) a co si pamatuju, tak to bylo bez výpadků (nepočítám do toho restart v rámci upgrade firmware a pak jeden restart, když jsem si odříznul management). Nabootování do plného provozu je pravda trochu delší, tipnu si tak 70 vteřin maximálně. Jen tak naokraj, ty nemanageovatelné se vesměs dají velice jednoduše předělat na manageovatelné odpájením několika bootstrap rezistorů a doplněním SPI flashky kam se nalije firmware podobného modelu…
Zkusil bych to delat postupne, tj. nejdriv koupit gigovy switch(e), vymenit misto starych 10/100 a otestovat jak se to bude na stavajicich kabelech chovat. Ve firme mame 20 let stare rozvody, vsechny tahane v Cat5, stanice jedou na 100Mbps switchich. V kanclu u ucetnich o patro niz jsem potreboval zrychlit prenosy na vnitrnim LANu, tak jsem jejich porty prepojil na maly 8-portovy gigovy switch od D-Linku. Cat5 kabely z neho do toho kanclu maji cca 30-40 metru, jede to na 1Gbps v poho.
Jde mi hlavne o spolehlivost z dlouhodobeho hlediska... jak dlouho je uz mas? Jinak tim ze jsou oba smart, za jak dlouho po zapnuti cca najedou/nabootujou do plneho ready stavu? U non-smart switchu se mi libi ze po zapnuti nemaji zadny lag, funguji vpodstate okamzite.
Byt v nájmu, cena, nevyužiju, velikost a ohebnost...
Preco menis CAT5 za CAT5E, ked uz to ides prerabat ? Aspon CAT6, alebo CAT6A by som uz tam daval, ak to pojde do steny.
matahl z Magea 
presne tak jak popisujes - strihnout, nalepit novy a protahnout... a pri tom narazis na problemy (vse jsem pri podobnych akcich zazil)
- ze v jednom miste kdysi praskla voda tak to tam vysekali, spravili, zahazeli (a pri tom znicili a zahazeli ten husi krk takze kabel byl pak napevno a neslo s nim hnout)
- na husim krku udelali dve ostre zatacky v rade za sebou a pri protahovani s druhym kabelem proste neprojdes
- husi krky jsou sice vsude ale nekde ho kousek chybel (posunuta zasuvka o metr) tak husi krk nenastavovali, ale proste kabel dotahli do zasuvky a zahodili
- pri tahani doslo k problemum a tak kabel primo v kusim krku nekdo napojil (bud spojkou nebo kroucenym spojem) takze ho pri protahovani pretrhnes

ale treba budes mit stesti :-)
Jak moc těžké bude v bytě, kde je v husích krcích (tak na 95 %) cat5, výměna za 5e (desítky metrů, patra, záhyby neznámé)? Teda ještě nevím, jestli to bude potřeba, třeba mi na tom jednom kabelu, kde chci giga nutně, náhodou pojede, protože je to kousíček, ale trochu se toho děsím. Ve skříni ve zdi jsou dva switche 10/100, takže to stavitele asi nijak zvlášť netrápilo na to, jak je ten byt nový. Mají na to profíci nějaká geniální šťouchadla? Napadá mě akorát ustřihnout starý kabel, nalepit na něj nový a vytahovat a doufat, že se to někde v zatáčce neutrhne a nerozlepí.
 
hkmaly - Slava pomlcky -  .
Kompiloval jsem ten go program co jsi tu posilal.
Ne, nastavením `dhcp-option=3` posíláš tuhle option prázdnou. Ale neznamená to „vypni option 3“
Ale možná se jen rýpu v technikáliích.
cube bzzzzz 
Jo, diky s timhle nakopnutim uz jsem to nasel, je to `dhcp-option=3` Coz prekvapive neznamena "zapni option 3" (gateway), "ale vypni option 3".
Asi by neměl posílat default route?
cube bzzzzz 
Stavim tady takove monstr-zarizeni, ma nejaky sitovy interface ze ktereho se ma ovladat. Kvuli plug-and-play jednoduchosti na tomto sitovem interface bezi dnsmasq a prirazuje pripojenym klientum IP adresu. Potud vsechno v poradku.

Problem ale je v tom ze kdyz si tam pripojim laptop (testovano s Macbookem) ktery ma WiFi, tak on si rekne ze ted ma dratovou sit a WiFi uz nepotrebuje, tim padem ztrati pripojeni do zbytku sveta (protoze moje monstrum nikam neroutuje, ma jen sve Web UI).

Da se dnsmasq nejak ohnout aby tomu laptopu vysvetlil ze tudy se do internetu nedostane? Nejak to nemuzu nikde najit.
 
hacker_ systemd free  Go
Těžko říct, co jsi kompiloval.

Binárka nikde je pořádku, modernc.org/sqlite/lib je knihovna, ne příkaz. Zkusme tedy příkaz:

me@here:~/tmp/cmd$ ll
celkem 4
-rw-r--r-- 1 jnml jnml 85 srp 10 09:49 main.go
me@here:~/tmp/cmd$ cat main.go 
package main

import (
	"modernc.org/sqlite"
)

func main() {
	_ = sqlite.Driver{}
}
me@here:~/tmp/cmd$ go mod init example.com/foo
go: creating new go.mod: module example.com/foo
go: to add module requirements and sums:
	go mod tidy
me@here:~/tmp/cmd$ go mod tidy
go: finding module for package modernc.org/sqlite
go: found modernc.org/sqlite in modernc.org/sqlite v1.12.0
me@here:~/tmp/cmd$ go clean -cache
me@here:~/tmp/cmd$ time go build

real	0m3,193s
user	0m10,875s
sys	0m0,549s
me@here:~/tmp/cmd$ ll
celkem 7140
-rwxr-xr-x 1 jnml jnml 7292830 srp 10 09:51 foo*
-rw-r--r-- 1 jnml jnml      68 srp 10 09:50 go.mod
-rw-r--r-- 1 jnml jnml    6768 srp 10 09:50 go.sum
-rw-r--r-- 1 jnml jnml      85 srp 10 09:49 main.go
me@here:~/tmp/cmd$ rm foo
me@here:~/tmp/cmd$ time go build

real	0m0,296s
user	0m0,577s
sys	0m0,102s
me@here:~/tmp/cmd$ ll
celkem 7140
-rwxr-xr-x 1 jnml jnml 7292830 srp 10 09:51 foo*
-rw-r--r-- 1 jnml jnml      68 srp 10 09:50 go.mod
-rw-r--r-- 1 jnml jnml    6768 srp 10 09:50 go.sum
-rw-r--r-- 1 jnml jnml      85 srp 10 09:49 main.go
me@here:~/tmp/cmd$ 

tl;dr: první build s `clean -cache` měří hlavně rychlost kompilátoru, druhý build build už použil přeloženou knihovnu v cache, takže měří hlavně rychlost linkeru.

hkmaly - Slava pomlcky -  .
Ostatne, muzu zkusit i to go:
strace -o LOG go build pokus.go # command-line-arguments ./pokus.go:11:8: undefined: todo ./pokus.go:17:12: undefined: todo ./pokus.go:28:8: undefined: todo # wc -l LOG 1940 LOG
... a binarka nikde, asi tam mas nejakou chybicku.
hkmaly - Slava pomlcky -  .
PS:
voyage:~# time /etc/init.d/nginx restart Restarting nginx: nginx. real 0m1.358s user 0m0.253s sys 0m0.048s
Celkem slusne na router s 256MB RAM a CompactFlash misto disku ...
hkmaly - Slava pomlcky -  .
voyage:/tmp# strace -o LOG -f /etc/init.d/nginx restart Restarting nginx: nginx. voyage:/tmp# wc -l LOG 1450 LOG
V druhem terminalu
wget -O - http://localhost/ ; /etc/init.d/nginx restart
Protoze jinak by strace samozrejme pokracoval v trasovani nginx, ale takhle jsme mohl snadno zkontrolovat ze v LOGu je ten pozadavek udelany wgetem, takze jsem ten druhy prikaz pustil akorat.

Ted jsem zvedavy na kolik syscallu bude ta go kompilace.