11#! /bin/bash
22# info: add backup sftp host
3- # options: HOST USERNAME [ PASSWORD] [PATH] [PORT]
3+ # options: HOST USERNAME PASSWORD [PATH] [PORT]
44#
55# The function adds sftp host for system backups
66
1111# Argument defenition
1212sftp_host=$1
1313sftp_user=$2
14- sftp_password= ${3- ****** }
14+ password= $3
1515sftp_path=${4-backup}
1616sftp_port=${5-22}
1717
18- A3=' ******'
19-
2018# Includes
2119source $VESTA /func/main.sh
2220source $VESTA /conf/vesta.conf
2321
24- # Replace password with ******
25- if [[ $A3 != ' ******' ]]
26- then
27- EVENT=" ${EVENT/ $sftp_password /****** } "
28- fi
22+ # Hiding password
23+ A3=' ******'
24+ EVENT=" $DATE $TIME $SCRIPT $A1 $A2 $A3 $A4 $A5 $A6 $A7 $A8 $A9 "
2925
3026# sftp command function
3127sftpc () {
32- expect -f " -" << EOF "$@ "
33- set count 0
34- spawn /usr/bin/sftp -o StrictHostKeyChecking=no -o Port=$sftp_port $sftp_user @$sftp_host
35- expect {
36- "password:" {
37- send "$sftp_password \r"
38- exp_continue
39- }
40-
41- -re "Couldn't|(.*)disconnect|(.*)stalled|(.*)not found" {
42- set count \$ argc
43- set output "Disconnected."
44- set rc $E_FTP
45- exp_continue
46- }
47-
48- -re ".*denied.*(publickey|password)." {
49- set output "Permission denied, wrong publickey or password."
50- set rc $E_CONNECT
51- }
52-
53- "sftp>" {
54- if {\$ count < \$ argc} {
55- set arg [lindex \$ argv \$ count]
56- send "\$ arg\r"
57- incr count
58- } else {
59- send "exit\r"
60- set output "Disconnected."
61- if {[info exists rc] != 1} {
62- set rc $OK
63- }
64- }
65- exp_continue
66- }
67-
68- timeout {
69- set output "Connection timeout."
70- set rc $E_CONNECT
71- }
72- }
73-
74- if {[info exists output] == 1} {
75- puts "\$ output"
76- }
77-
78- exit \$ rc
28+ expect -f " -" << EOF "$@ "
29+ set count 0
30+ spawn /usr/bin/sftp -o StrictHostKeyChecking=no -o \
31+ Port=$sftp_port $sftp_user @$sftp_host
32+ expect {
33+ "password:" {
34+ send "$password \r"
35+ exp_continue
36+ }
37+
38+ -re "Couldn't|(.*)disconnect|(.*)stalled|(.*)not found" {
39+ set count \$ argc
40+ set output "Disconnected."
41+ set rc $E_FTP
42+ exp_continue
43+ }
44+
45+ -re ".*denied.*(publickey|password)." {
46+ set output "Permission denied, wrong publickey or password."
47+ set rc $E_CONNECT
48+ }
49+
50+ "sftp>" {
51+ if {\$ count < \$ argc} {
52+ set arg [lindex \$ argv \$ count]
53+ send "\$ arg\r"
54+ incr count
55+ } else {
56+ send "exit\r"
57+ set output "Disconnected."
58+ if {[info exists rc] != 1} {
59+ set rc $OK
60+ }
61+ }
62+ exp_continue
63+ }
64+
65+ timeout {
66+ set output "Connection timeout."
67+ set rc $E_CONNECT
68+ }
69+ }
70+
71+ if {[info exists output] == 1} {
72+ puts "\$ output"
73+ }
74+
75+ exit \$ rc
7976EOF
8077}
8178
79+
8280# ----------------------------------------------------------#
8381# Verifications #
8482# ----------------------------------------------------------#
8583
86- check_expect= $( which expect )
87- if [[ ! -n $check_expect ]]
88- then
89- echo " Error: \" expect\" utility not found"
90- log_event " $E_NOTEXIST " " $EVENT "
91- exit $E_NOTEXIST
84+ check_args ' 3 ' " $# " " HOST USERNAME PASSWORD [PATH] [PORT] "
85+ which expect > /dev/null 2>&1
86+ if [ $? -ne 0 ] ; then
87+ echo " Error: expect utility not found"
88+ log_event " $E_NOTEXIST " " $EVENT "
89+ exit $E_NOTEXIST
9290fi
93-
94- check_args ' 2' " $# " " HOST USERNAME [PASSWORD] [PATH] [PORT]"
91+ is_password_valid
9592
9693# ----------------------------------------------------------#
9794# Action #
@@ -100,35 +97,35 @@ check_args '2' "$#" "HOST USERNAME [PASSWORD] [PATH] [PORT]"
10097# Checking network connection and write permissions
10198sftmpdir=" $sftp_path /vst.bK76A9SUkt"
10299sftpc " mkdir $sftp_path " > /dev/null 2>&1
103- sftpc " mkdir $sftmpdir " " rmdir $sftmpdir "
100+ sftpc " mkdir $sftmpdir " " rmdir $sftmpdir " > /dev/null 2>&1
104101rc=$?
105- if [[ " $rc " != 0 ]]
106- then
107- case $rc in
102+ if [[ " $rc " != 0 ]]; then
103+ case $rc in
108104 $E_CONNECT ) echo " Error: can't login to sftp host" ;;
109- $E_FTP ) echo " Error: can't create temp folder on the sftp host" ;;
110- esac
111- log_event " $rc " " $EVENT "
112- exit " $rc "
105+ $E_FTP ) echo " Error: can't create temp folder on the sftp host" ;;
106+ esac
107+ log_event " $rc " " $EVENT "
108+ exit " $rc "
113109fi
114110
115111# Adding sftp backup config file
116112echo " HOST='$sftp_host '
117113USERNAME='$sftp_user '
118- PASSWORD='$sftp_password '
114+ PASSWORD='$password '
119115BPATH='$sftp_path '
120116PORT='$sftp_port '
121117TIME='$TIME '
122118DATE='$DATE '" > $VESTA /conf/sftp.backup.conf
123119chmod 660 $VESTA /conf/sftp.backup.conf
124120
121+
125122# ----------------------------------------------------------#
126123# Vesta #
127124# ----------------------------------------------------------#
128125
129126# Update vesta.conf
130- if [ -z " $( grep LANGUAGE $VESTA /conf/vesta.conf) " ]; then
131- echo " BACKUP_SYSTEM='ftp '" >> $VESTA /conf/vesta.conf
127+ if [ -z " $( grep BACKUP_SYSTEM $VESTA /conf/vesta.conf) " ]; then
128+ echo " BACKUP_SYSTEM='sftp '" >> $VESTA /conf/vesta.conf
132129else
133130 bckp=$( echo " $BACKUP_SYSTEM ,sftp" | \
134131 sed " s/,/\n/g" | \
139136fi
140137
141138# Logging
142- echo " $sftp_host /$sftp_path successfully added as backup destination"
143139log_event " $OK " " $EVENT "
144140
145141exit
0 commit comments