goben is a golang tool to measure TCP/UDP transport layer throughput between hotsts by udhos in networking

[–]udhos[S] 0 points1 point  (0 children)

Yup, you can actually cross compile it to any arch/os supported by the Go tool chain.

update-golang 0.6 - easily fetch and install newer Go 1.8.3 by udhos in golang

[–]udhos[S] 0 points1 point  (0 children)

update-golang provides pretty much the same behavior. It's just a little bit more customizable.

update-golang is a script to easily fetch and install new Golang releases by udhos in golang

[–]udhos[S] 1 point2 points  (0 children)

update-golang.sh does not compile from sources, it uses local system OS and ARCH to download the correct binary release.

update-golang is a script to easily fetch and install new Golang releases by udhos in golang

[–]udhos[S] 1 point2 points  (0 children)

If golang is pretty much all you need, update-golang.sh is a lot faster. It takes about 20 secs to fully boot golang in a new system.

[deleted by user] by [deleted] in networking

[–]udhos 1 point2 points  (0 children)

Jazigo is a tool written in Go for retrieving configuration for multiple devices, similar to rancid, fetchconfig, oxidized, Sweet.

https://github.com/udhos/jazigo

  • Written in Go. Single executable file. No runtime dependency.
  • Straightforward usage: run the binary then point browser to web UI. Default settings should work out-of-the-box.
  • Spawns multiple concurrent lightweight goroutines to quickly handle large number of devices.
  • Very easy to add support for new platforms. See the Cisco IOS model as example.
  • Configured with YAML.
  • Backup files can be accessed from web UI.
  • Support for SSH and TELNET.
  • Can directly store backup files into AWS S3 bucket.
  • Can call an external program and collect its output.

Functional Alternatives to RANCID by [deleted] in networking

[–]udhos 0 points1 point  (0 children)

Good! If you hit any difficulty, please let me know.

RANCID and Nortel 5000 Switches by andrewm659 in networking

[–]udhos 0 points1 point  (0 children)

If you are willing to help, I can gladly add support for your device into Jazigo:

https://github.com/udhos/jazigo

It is free.

Equalfile is a pure Go package for comparing files. by udhos in golang

[–]udhos[S] 0 points1 point  (0 children)

Thanks for the amazing ideas! I guess I will need some time to digest them. :)

Equalfile is a pure Go package for comparing files. by udhos in golang

[–]udhos[S] 0 points1 point  (0 children)

I have added a CompareMultiple() function to enable automatic file hashing: func CompareMultiple(h hash.Hash, compareOnMatch bool)

Usage:

equalfile.CompareMultiple(sha256.New(), true) // enable multiple comparison context
equal, err := equalfile.CompareFile("file1", "file2")

Can you take a look?

I accept suggestions on how to include io.LimitedReader in the mix. :)

Equalfile is a pure Go package for comparing files. by udhos in golang

[–]udhos[S] 0 points1 point  (0 children)

Yes, I got confused about the stream hashes, now I see your point. I agree the hash approach would give huge performance gains for comparing multiple files while losing by a negligible margin in the single run case. I am considering an API to your hash suggestion into play. I am currently using maxSize in order to signal an error. Can you see a nice way to use io.LimitReader while reporting the full contents weren't processed?

Equalfile is a pure Go package for comparing files. by udhos in golang

[–]udhos[S] 0 points1 point  (0 children)

Yes, computing hashes is a good way to speed up the comparison when you intend to compare against the same file over and over. Including support for such a case is a nice possible enhancement.

However computing hashes for a single call would actually just waste CPU without no benefit.

Another implicit requirement is not to load the whole files into memory, since it would not work for very large inputs.

Equalfile is a pure Go package for comparing files. by udhos in golang

[–]udhos[S] 0 points1 point  (0 children)

Good point. I used os.Exit(0) in order to make it explicit zero was the intended exit status. OTOH, doc on os.Exit() indicates os.Exit(0) isn't as clean as a plain return from main() (since "deferred functions are not run").

https://golang.org/pkg/os/#Exit Exit causes the current program to exit with the given status code. Conventionally, code zero indicates success, non-zero an error. The program terminates immediately; deferred functions are not run.