…with an open minded approach

Posts tagged “server

setup iptable rules for transmission (torrents)

Without further addo, here it is, a working example how to configure iptables to allow transmission torrents to internet (udp 51413) + transmission remote RPC (tcp 9091, localnetwork only) + ssh (tcp 22, localnetwork only).

 

 

Drop a comment if its usefull ๐Ÿ™‚


bash scripts multiple arguments

Example how to parse multiple arguments, one-by-one, in bash – be aware of the importance of surrounding “$@” and “$ARG_I” within double-quotes.

 

 

 


sudo run as another user – scripting it

To ease your admin scripts….


Bash local variables

All variables in bash default to being *global*.

To define a variable as *local* to a function, we can do:

function my_func {

local MY_LOCAL_VAR=”is local to the scope of its function”

}


Detect ssh login from ~/.bashrc

When you login with ssh, your environment gets 2 variables defined: SSH_CONNECTION and SSH_TTY

A simple way to detect if you are inside a bash session, established from ssh-login, is to check these vars

You can put this check inside ~/.bashrc, so that it executes in all new bash-logins, so that when a ssh-login is detected you can make something happen ๐Ÿ™‚

This is a simple hack to detect normal ssh-logins, but dont use this for anything too important ๐Ÿ™‚

 

 


incron

There is a great linux kernel functionality called “inotify” – which can emmit events on file changes. Its just great, have a look at its home page, I think its one of those linux pearls not much widely known…

Well, the thing is that using inotify, a tool called incron has been made, which is like a cron for file events (instead of time events), and that is really usefull when we want to detect file changes and react accordingly ๐Ÿ™‚ very usefull for server scripts ๐Ÿ™‚

And so, without further delay, here it goes, the best resume I found so far detailing how to use incron: http://www.howtoforge.com/triggering-commands-on-file-or-directory-changes-with-incron

NOTES: there be dragons…

Inside you incrontabs, you must leave *only* 1 space between the <path> <mask> <cmd>. If you leave 2 or more spaces, then the 2nd (and more) spaces will be considered part of the <mask> or <cmd> and it will fail… I was leaving 2 spaces between <mask> and <cmd>, and incron did not work and in /var/log/syslog there were these messages

incrond[27693]: cannot exec process: No such file or directory

This was because of having 2 spaces… when I corrected to only 1 space, it began working correctly. Keep it in mind, so you dont suffer as much as I did to find it out ๐Ÿ™‚

 

After editing with “incrontab -e”, check that “incrontab -l” shows the rules. If it does not show some rule, then that is because that rule has some error and was not recognized.

 

To debug what is happening behind the curtains, its usefull to have a “tail -f /var/log/syslog” on another terminal…

 

Cheers


tmux notes

After a long-time relationship with screen I also got to a point when tmux was more compeling… and there I go, into the tmux world, in a peacefull move (nothing bad said about screen ! there are already too much screen-hate-converted-tmuxers…)

Here I leave some personal notes for the switcher:

Configuration files

/etc/tmux.confย ย ย  – system-wide

~/.tmux.confย ย  ย  ย  ย  – user-only

If terminal colors are all messed up (in vim and such)

 


Ubuntu server: check on terminal if system restart is required after upgrade

Basically check the existence of fileย /var/run/reboot-required

For more info have a look at this answer in an ubuntu thread