Hide

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again.

Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.


Get involved!

You can sign-in using OpenID credentials, or register a traditional username and password.

First-time OpenID users will be automatically assigned a username which can be changed after signing in.

Universal configuration monitoring and system of record for IT.
Hide

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for:

Hide

News

May 19, 2015 - A Look At The New Commandlinefu
I've put together a short writeup on what kind of newness you can expect from the next iteration of clfu. Check it out here.
March 2, 2015 - New Management
I'm Jon, I'll be maintaining and improving clfu. Thanks to David for building such a great resource!
Hide

Top Tags

Hide

Functions

Psst. Open beta.

Wow, didn't really expect you to read this far down. The latest iteration of the site is in open beta. It's a gentle open beta-- not in prime-time just yet. It's being hosted over at UpGuard (link) and you are more than welcome to give it a shot. Couple things:

  • » The open beta is running a copy of the database that will not carry over to the final version. Don't post anything you don't mind losing.
  • » If you wish to use your user account, you will probably need to reset your password.
Your feedback is appreciated via the form on the beta page. Thanks! -Jon & CLFU Team

Intercept, monitor and manipulate a TCP connection.

Terminal - Intercept, monitor and manipulate a TCP connection.
mkfifo /tmp/fifo; cat /tmp/fifo | nc -l -p 1234 | tee -a to.log | nc machine port | tee -a from.log > /tmp/fifo
2009-02-20 04:00:15
User: prutser
Functions: cat mkfifo tee
32
Intercept, monitor and manipulate a TCP connection.

Forwards localhost:1234 to machine:port, running all data through your chain of piped commands. The above command logs inbound and outbound traffic to two files.

Tip: replace tee with sed to manipulate the data in real time (use "sed -e 's/400 Bad Request/200 OK/'" to tweak a web server's responses ;-) Limitless possibilities.

Alternatives

There is 1 alternative - vote for the best!

Terminal - Alternatives
ncat -l -p 1234 --sh-exec "tee -a to.log | nc machine port | tee -a from.log"
2012-01-11 15:14:17
User: peter4512
1

This will handle multiple incoming connections. Also, found sed works best with -u flag (unbuffered io).

Easiest way I've found to get ncat is to install nmap.

Know a better way?

If you can do better, submit your command here.

What others think

Having the command like that only listens to one request. To keep listening, you should put it inside a loop. Like this:

mkfifo /tmp/fifo ; while :; do cat /tmp/fifo | nc -l -p 80 | tee -a to.log | nc localhost 8000 | tee -a from.log > /tmp/fifo; done

mkfifo /tmp/fifo ; while :; do cat /tmp/fifo | nc -l -p 80 | tee -a to.log | nc localhost 8000 | tee -a from.log > /tmp/fifo; done

Also, it took me quite a while to find out what was done and how. For example if you want to debug your http-server running on port 8000, you would do the command as I did and then go to http://localhost instead of http://localhost:8000 as you would normally

Comment by Masse 391 weeks and 3 days ago

should be nc -l 80 (without the -p)

Comment by 5partan 255 weeks and 4 days ago

@5partan: true for Linux, but on Mac you need to add -p IIRC.

Comment by prutser 255 weeks and 4 days ago

Your point of view

You must be signed in to comment.