Today we have an interactive shell script that will transfer files or directory from source to destination. This script will allow copy multiple files and directories. The script will only work assuming you have configured ssh key-based authentication between two machines.
The script will request to input the destination hostname or ip address and path of the destination folder. On the new line you need to provide filename or directory that needs to be transferred. You will be only allowed to copy one file or directory per line. When hitting enter, you will allowed to provide next file/directory. Script will exit once it receives a blank field.
#!/bin/bash #next line prints hearer of script echo "Interactive Script to Copy File (files) / Directory using scp" #next line check if entered value is not null, and if null it will reask user to enter Destination Server while [ x$desthost = "x" ]; do #next line prints what userd should enter, and stores entered value to variable with name desthost read -p "Destination Server Name : " desthost #next line finishes while loop done #next line check if entered value is not null, and if null it will reask user to enter Destination Path while [ x$destpath = "x" ]; do #next line prints what userd should enter, and stores entered value to variable with name destpath read -p "Destination Path : " destpath #next line finishes while loop done #next line put null value to variable filename filename='null' #next line check if entered value is null, and If not null it will reask user to enter file(s) to copy while ! [ x"$filename" = "x" ]; do #next line prints what userd should enter, and stores entered value to variable with name filename read -p "Path to source directory / file : " filename #next line checks if entered value is not null, and if not null it will copy file(s) if ! [ x"$filename" = "x" ]; then #next line prints header echo -n "Copying $filename ... " #next like copy pre-entered file(s) or dir to destination path on destination server scp -r "$filename" "$desthost":"$destpath" #end of if fi #next line finishes while loop done
Running the SCP script
[root@TestNode1 ~]# sh scpcopyscript.sh Interactive Script to Copy File (files) / Directory using scp Destination Server Name : 192.168.0.2 Destination Path : /tmp Path to source directory / file : /root/backup.txt backup.txt 100% 0 0.0KB/s 00:00 Path to source directory / file : /root/docsdir file2.txt 100% 0 0.0KB/s 00:00 file3.txt 100% 0 0.0KB/s 00:00 file1.txt 100% 0 0.0KB/s 00:00 Path to source directory / file : [root@TestNode1 ~]#