Sys admin tips
Too small to be put in separate post I will use this one "feature" post for putting all the little tricks I am using in my daily work. So when I remember something usefull or stumble on something new I't will go here...
- find your public IP from CLI
 - list and kill screen session
 - run playbook on a single host
 - ldapsearch auto decode base64
 - xenserver syslog level
 - disable ipv6
 - xen orchestra set NFS v4
 - search string inside files
 - search files recursively and copy
 - redirect standard error (stderr)
 - check on what ports server is listening
 - set default web browser
 
find your public IP from CLI
There are few ways you can get your IP from command line. Easiest are using curl or wget:
curl ifconfig.me
wget -qO- ifconfig.me
Or using google servers:
dig TXT +short o-o.myaddr.l.google.com @ns1.google.co
list and kill screen session
Seems I always forget this one. So here it is. First command lists all sessions and second one kills the session by specifiying its ID:
screen -list
screen -XS [sessionID] quit
run playbook on a single host
If you have a playbook ready and need to run it ad-hoc on single host that you haven't specified in hosts file you can use this (note comma at the end of IP address, it is important):
ansible-playbook -i 1.1.1.1,  playbook.yml
ldapsearch auto decode base64
When using ldapsearch and getting attribute values back coded in base64 It's nice and handy to have it auto decoded while your ldapsearch command is throwing output.
So just put into your .bashrc:
myldapsearch()
{
ldapsearch $* | perl -MMIME::Base64 -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode_base64($1)/eg;print'
}
And after that reload your .bashrc:
source .bashrc
Now whenever you use ldapsearch it will autodecode base64 values.
xenserver syslog level
There is still no way (at least not in XenCenter 7.3, later versions I haven't checked) to send custom level logs from xenserver into your central log server using GUI. Since default level is info you will be flooded with xapi info messages. Work around this is by manually editing rsyslog file on xenserver host /etc/rsyslog.d/xenserver.conf and at the end add:
.=warn;*.=crit;*.=err  @your.log.server
After that just restart rsyslog service with service rsyslog restart.
disable ipv6
To disable ipv6 put at the end in /etc/sysctl.conf:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1 
Then restart sysctl:
sysctl -p
xen orchestra set NFS v4
If needed you can set NFS to use v4 for your remotes (default is v3)
sudo nano /opt/xen-orchestra/@xen-orchestra/fs/dist/nfs.js
And change line where mount command is to use v4:
return (0, _execa.default)('mount', ['-t', 'nfs', '-o', 'vers=4'....
After just restart xo-server:
sudo service xo-server restart
search string inside files
If you need to search specific string inside files:
grep -rnw '/path/to/start/search' -e 'string'
search files recursively and copy
Sometimes you need to move specific files from inside multiple directories. Most this happen when TV show episode is in its own folder. Not sys admin problem but hey :)
find 'path/to/' -name '*.mkv*' -type f -exec mv {}  /path/to/season1/ \;
redirect standard error (stderr)
If you need to output command to a file writing:
ls /blabla > output.txt
This will still output of error messages in terminal. So to redirect those messages also use:
ls /blabla > output.txt 2> error.txt
The number 2 specifies the stream ID that the shell modifies. Stream ID
1 is standard output (the default), and 2 is standard error.
So if you like you can redirect both to the same file:
ls /blabla > log.txt 2>&1
check on what ports server is listening
To check what services are runing that is on what ports they are listening you can use netstat command from net-utils package:
sudo netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      15662/postgrey --pi 
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      15882/master        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      462/sshd            
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      15882/master        
tcp        0      0 0.0.0.0:4190            0.0.0.0:*               LISTEN      6703/dovecot        
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      6703/dovecot        
tcp6       0      0 :::587                  :::*                    LISTEN      15882/master        
tcp6       0      0 :::9100                 :::*                    LISTEN      415/node_exporter   
tcp6       0      0 :::22                   :::*                    LISTEN      462/sshd            
tcp6       0      0 :::25                   :::*                    LISTEN      15882/master        
tcp6       0      0 :::4190                 :::*                    LISTEN      6703/dovecot        
tcp6       0      0 :::993                  :::*                    LISTEN      6703/dovecot
set default web browser
There are few ways depending what you are using. But few examples would be
xdg-settings set default-web-browser google-chrome.desktop
update-alternatives --config x-www-browser
update-alternatives --config gnome-www-browser