Happy new 2023 and work!

Happy new year! And happy new work to me!

I'm very pleasure to announce that this year I got a new job within a startup, Pixora, where I will continue to invest to my capabilities with the role of  "Senior Project Development Manager".

If you want to get other information on this company, go to main website https://www.pixora.it/

So, let's begin with this new adventure...stay tuned!


Log raw mail content to file


After a long time, I return to write on my personal blog with a personal challenge. I've a Linux box with some scheduled tasks using cron service. I want to send mail to my personal mailbox in case of error of a single task (preferably with error log). It's not hard to configure the environment because just use a simple MTA (personally prefer msmtp) to send mails via command line. But it's hard to set up the values of From and To fields because cron use the default of execution user. 
So, the first question was: How to write the raw content of mail to disk ? 
The solution is to write a simple bash script that replace sendmail and write content of the mail to disk.

  cat - >> /tmp/$(date +%s).txt

Then, create a symbolic link of the script with sendmail name, and it's ready to write raw content to tmp path. The next step is to change the values of From and To fields....easy. With

sed "s/From: root\.*/From: [email protected] /" | sed "s/To: root/To: [email protected]/" | /usr/bin/msmtp $*
and it's done! Now, my mailbox has a set of mail sent from my linux box.

See youu.....


nmap Quick Reference

Basic usage

Enum SSL Chipers on specific port (RDP 3389)
nmap -sV --script ssl-enum-ciphers -p 3389 192.168.x.x
Simple ping hosts
nmap -sn 192.168.x.x


Docker Quick Reference

This post is for me a place where to store notes about Docker. I hope that this can be helpful for you.

Basic usage

How do you disable auto-restart on a container? (Ref.)
docker update --restart=no my-container
How can we see all possible variables for a format?
docker container ls -a --format '{{json .}}'
How to analyze disk usage of a Docker container ? (Ref.)
docker ps --size
docker system df --verbose
How to show container bind ports ?
docker port container_name


How to export all images ?
eval $(docker image ls --format 'docker save {{.ID}} -o "{{.ID }}.tar.gz";')


Vim Quick Reference

Basically, vim has three working modes:

  1. Command mode
  2. Insert Mode
  3. Ex-mode

Basic VIM Movement

  • b move back from word
  • w move next to word


Disable text wrap

:set wrap!
(you can use ~/.vimrc)

Display or hide line numbers?

:set number
for display
:set nonumber
for hide


VMWARE - Get snapshots and size of VMs

Today I need to check the snapshots of all VMs of a VMware infrstructure. Unfortunately I have found that with vSphere Client and vSphere Web Client it's not possibile to get a list of snaps associated to VMs.

So, after a advanced google search, I have found that this is possibile using VMware PowerCLI tools.
I've installed the version 5.5 available in this page https://code.vmware.com/web/tool/5.5/vmware-powercli

After this, I use powershell for loading the snapin and connect to my vcenter server with this:

add-pssnapin vmware.vimautomation.core
connect-viserver myvcentersrv_FQDN

Then with the commmand I get the list with VM name, number of snapshot and size:

Get-VM | Format-Table Name, @{Label="NumSnapshots";Expression={(Get-Snapshot -VM $_ | Measure-Object).Count}}, @{Label="TotalSnapShotSizeMB";Expression={(Get-Snapshot -VM $_ | Measure-Object -Sum SizeMB).Sum}}

Ref: http://www.vhersey.com/2016/03/01/quick-powercli-to-get-snapshots-and-size/


Pip Quick Reference

Basic pip usage

Upgrade PIP
python -m pip install --upgrade pip
Find outdated/updatable pip packages
pip list --outdated
Getting info on your python environment
python -m site


Git Hooks - A way to automate deploy tasks

During my work I use git for automate the deploy on production system. Sometimes I need execute some command or script immediately after checkout. Git has a very powerful mechanism called hooks (you can read more about it on official documentation follow this link).
On client side to install hooks what you have to do is to create a dir called hooks under .git/ . But  you do not have to do any of this because when you have initialized your project git create it for you.
If you list the content of hooks dir you can found a list of samples script to use (all of them are bash scripts). Most of this script start with the prefix  pre- or post- followed by action name.
The script that I found helpful is post-checkout that is automatically executed after a successful git checkout. My post-checkout script contain commands for adjust permissions on files and ask to restart web server.

git ls-files -z --with-tree="$2" --directory | xargs -0 chmod o-rxw --
git ls-files -z --with-tree="$2" --directory | xargs -0 chown www-data:www-data --
find . -type d | xargs -I {} chown www-data:www-data {}
find . -type d | xargs -I {} chmod o-rwx {}
exec < /dev/tty

while true;
      read -p "Do you want to restart apache?  [Y/N]:" choice
      case "$choice" in
         y|Y) service apache2 restart;break;;
         n|N) break;;
         *) echo "invalid" && break;;

Remember to add execute permission to this script or git won't execute it after the checkout.


Git Handbook

Git Setup

How to setup git with SSH Key

git remote set-url origin [email protected]:<Username>/<Project>.git

Configure username and mail

git config --global user.name "Name Surname"
git config --global user.email "mymail(at)mydomain.com"

Filename too long in git for windows

git config --system core.longpaths true

Note: You need to run as administrator.
Ref: https://stackoverflow.com/questions/22575662/filename-too-long-in-git-for-windows

Windows CRLF chars.

Su windows bisogna disattivare questa funziona altrimenti non funzionano i caratteri CRLF.
git config core.autocrlf false

How can I debug git/git-shell related problems?

If you have problem with Git and you need to debug you can run this:

Ref: https://stackoverflow.com/questions/6178401/how-can-i-debug-git-git-shell-related-problems

How to get list of files between change log ?

If you need to get list of files (included directory tree) from change list you can use:

git diff-tree -r --name-only 2c636a^ 5b47402 | xargs -I {} rsync -aR {} output/

Delete files from git index when they are already deleted

git ls-files --deleted -z | xargs -0 git rm

How do I show my global git config?

git config --list

Show remote branches

git branch -vr

Git Commands

How to commit only staged modified and deleted files?

git add -u

List log with tag date

git log --date-order --graph --tags --simplify-by-decoration --pretty=format:'%ai %h %d'


How to improve reading of log files

There are hard times when a sysadmin have to read a lot of rows of log files for troubleshoot a system error. In this times can be helpful to use some tools to improve reading of these files.

I've found two tools:

  • Generic Colouriser (GRC)https://github.com/garabik/grc - there are programs: grc and grcat. The main is grcat, which acts as a filter, i.e. taking standard input, colourising it and writing to standard output. Then you can use configuration files for customize color ouput depend on you application output log. 
  • Log File Navigator (LNAV)http://lnav.org/ - this is a real log file navigator that parse content of file and follow the stream for read latest lines. Lnav can help highlight the parts that are important and filter out the noise.