Show IP address in history

On the Linux Server, the history command shows previously executed commands. If you have many people working on a server, it is better log IP address of the user who run the command along with time for security reason.

To log, IP and date, create a file

vi /usr/local/bin/sok_detailed_history

In the file, add

#!/bin/bash
# Author: ServerOK.in
# Email: [email protected]
# Web; https://serverok.in

SET_IP=`echo -n $SSH_CLIENT|cut -d' ' -f1`
if [[ `tail -n1 ~/.bash_history|rev|cut -c -4|rev` != `date +%Y` ]]
then
    sed -i "\$s/$/ #entered by `echo -n $SET_IP` on `date`/g" ~/.bash_history
fi

Make it executable

chmod 755 /usr/local/bin/sok_detailed_history

Create file

vi  /etc/profile.d/sok_detailed_history.sh

Add the following to the file

export PROMPT_COMMAND="history -a; /bin/bash /usr/local/bin/sok_detailed_history"

Log out and log in to the server. Now your history will also record IP address that is used to login to server. PROMPT_COMMAND environment variable allows you to execute a command every time command promt is shown. To see how PROMPT_COMMAND works, just run

PROMPT_COMMAND="echo I am here"

Example

boby@sok-01:~$ PROMPT_COMMAND="echo I am here"
I am here
boby@sok-01:~$ 
I am here
boby@sok-01:~$ 
I am here
boby@sok-01:~$ 

Every time I press enter, the command specified in the PROMPT_COMMAND variable gets executed. Just close the current terminal to undo the change.

See history

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *