. /path/to/script/containing/function
Using 2>&1 in logging shell script output
> (greater than symbol) means to redirect output somewhere
1 is fd1 (file descriptor 1) which denotes STDOUT (standard output)
2 is fd2 (file descriptor 2) which denotes STDERR (standard error)
On a side note, 0 means STDINPUT (standard input)
& is AND operator
2>&1 then means, redirect STDERR to STDOUT. This is useful for redirecting all program errors and output to a log file.
run_something > 2>&1 > /path/to/log/file or
run_something > 2>&1 | tee /path/to/log/file
If you wish to append to the file instead of replacing its contents all the time, you can use >> instead of >
run_something > 2>&1 >> /path/to/log/file
How to write email via CLI using "mail" for automated scripts
mail -s "My Subject" email@example.com < message.txt
You can also customize header variables like 'from' address using the -S
mail -S from=from@example.com -s "My Subject" email@example.com < message.txt
In a shell script, check if an error was thrown and error level is not zero after running a command, script or program using dollar-question mark ($?).
Error level in a shell is denoted by dollar - question mark ($?). If something goes wrong from a previous execution, it will then have a value other than zero. To use in shell script,
do_something
if [ $? -eq 0]; then
echo "success";
else
echo "fail";
fi
To do arithmetic expansion and evaluation with a shell script, use "let" or double parenthesis construct.
let a=1+2;
echo $a;
or,
((a=1+1));
echo $a;
Password-less Remote Authentication Using RSA/DSA Public Keys on Servers.
First attach generate your client RSA public/private key pair. In Linux systems it is usually generated by,
ssh-keygen -t rsa
The above the generates id_rsa.pub (public key) and id_rsa (private key)
Then, copy the id_rsa.pub contents and add it to the specific user of your choice in the target server's authorized_keys.
For root user append the contents of id_rsa.pub below,
/root/.ssh/authorized_keys
For normal users append the contents of id_rsa.pub to the home directory of the target user.
$HOMEDIR/.ssh/authorized_keys
Note that on the remote server, logged in as the user and running the command `ssh-keygen` will do the same thing as when you are in your client where it generates a private and public key file. In the process, it also creates the correct SSH directory where the system would look for authorized_keys file, in this case $HOMEDIR/.ssh. It is recommended that you use this method in creating your .ssh directory of the logged-in user then create the authorized_keys file.
ssh-keygen #this creates the .ssh directory, public key and private key
cd $HOMEDIR/.ssh
touch authorized_keys
For a user called test with a home directory in /home/test, the sequence of commands will be as follows.
ssh-keygen #this creates the .ssh directory, public key and private key
cd /home/test/.ssh
touch authorized_keys
Once that is completed, append the public key to the authorized_keys file
/path/to/user/test/id_rsa.pub/file >> authorized_keys
You can now log-in using the user added to the authorized_keys using the normal ssh connection but no need to type in password.
ssh test@server
Change date and timezone
Backup and link the zoneinfo so it reflects to your current date settings.
mv /etc/localtime /etc/localtime-default; ln -sf /usr/share/zoneinfo/Asia/Manila /etc/localtime;
Create htpasswd file for basic authentication
htpasswd -b[cmdpsD] password.file user password
Notice that -b option is required which indicates to use the password provided in the command line.
No comments:
Post a Comment