Ssh, scp, tcl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдмреИрдХрдЕрдк рдмрдирд╛рдирд╛ред рдХрдИ рддрд░реАрдХреЗ

рдмреИрдХрдЕрдк рдПрдХ рдЬрд░реВрд░реА рдЪреАрдЬ рд╣реИред рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ рдЬрдм рдХреНрд╖реБрджреНрд░рддрд╛ рдХрд╛ рдХрд╛рдиреВрди рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрдИ рдПрд╣рддрд┐рдпрд╛рддреА рдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЬрд╛рдирдХрд╛рд░реА рдЦреЛ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреА рдмрд╣рд╛рд▓реА рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдХреЛрдИ рдмреИрдХрдЕрдк рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдЦреАрдВрдЪ рд╕рдХреЗрдВред

рдЪреБрдиреМрддреА рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдЕрдХреНрд╕рд░ рдЕрджреНрдпрддрди рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдПрдХ "рдореБрдЦреНрдп" рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдмреИрдХрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬрд┐рд╕реЗ рд╣рдо рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рд░рдЦреЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдмреИрдХрдЕрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛, рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдПрд╕рд╕реАрдкреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рдмреИрдХрдЕрдк рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЙрдкреА рдХрд░реЗрдЧрд╛ред

рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред



рдкрд╣рд▓реА рд╡рд┐рдзрд┐



рдпрд╣ рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ - рдпрд╣ SSH (ssh-id рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд░рд╕реНрде рдкрд╛рд╕рд╡рд░реНрдб рд░рд╣рд┐рдд рдХреБрдВрдЬреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред



рд╣рдорд╛рд░реА рдкрд╣рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ:



#!/bin/bash



DST_IPADDR=91.214.132.14

DST_LOGIN=root



BACKUPDIRS="/home/test1 /home/test2"

TMPDIR="/home/"

timestamp=`date "+%Y_%m_%d"`



err() { echo -e "* Error: $1"; exit 1; }



ssh $DST_LOGIN@$DST_IPADDR 'tar -zcvf '$TMPDIR$DST_IPADDR'_'$timestamp'.tar.gz '$BACKUPDIRS || err "Remote connection failed"

scp $DST_LOGIN@$DST_IPADDR:${TMPDIR}${DST_IPADDR}_${timestamp}.tar.gz ./

ssh $DST_LOGIN@$DST_IPADDR 'rm -f '$TMPDIR$DST_IPADDR'_'$timestamp'.tar.gz' || err "Remote connection failed"








рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИ, рдПрдХ рдмреИрдХрдЕрдк рдмрдирд╛рддреА рд╣реИ, рдЗрд╕реЗ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рдмрдирд╛рдП рдЧрдП рдмреИрдХрдЕрдк рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред



рджреВрд╕рд░реА рд╡рд┐рдзрд┐



рдпрд╣ рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдЯреАрд╕реАрдПрд▓ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рджреВрд░рд╕реНрде рдХрдиреЗрдХреНрд╢рдиред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ SSH рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб-рдХрдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ (рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛) рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдВ, рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рдмрд╛рдж рдХреЗ рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЙрдЧрд┐рди рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ



рд╣рдорд╛рд░реА рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ:



#!/usr/bin/expect -f

set timeout 100

set SELFPASS "mypassword"

set SELFUSER "root"

set SELFIP "91.214.132.13"

set SELFDIR "/home/backup5"



set PASS "remotepassword"

set USER "root"

set IPSERV "91.214.132.14"

set BackupDirectories "/home/test1 /home/test2"

set TMPDIR "/home/backup5"



spawn ssh $USER@$IPSERV

expect "assword:"

send "$PASS\r"

expect "#"

send "tar -zcvf $TMPDIR/backup.tar.gz $BackupDirectories\r"

expect "#"

send "scp -r $TMPDIR/backup.tar.gz $SELFUSER@$SELFIP:$SELFDIR/\r"

expect {

-re ".*Are.*.*yes.*no.*" {

send "yes\r"

exp_continue

#look for the password prompt

}

"assword:" {

send "$SELFPASS\r"

#he expect command will now return

}

}



send "exit;\r"

expect eof









рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ tcl рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИ, рдФрд░ рдЙрдореНрдореАрдж рдХрдорд╛рдВрдб (рд╡рд┐рдзрд┐) рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред рдЕрдЧрд▓рд╛, рдпрд╣ рдПрдХ рдмреИрдХрдЕрдк рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЙрд╕реА рд╕реНрдХреЗрдк рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд tcl (рдЙрдореНрдореАрдж) рд╕рдВрдХреБрд▓ рдХреЗ рдЕрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдбреАрдмрдЧрд┐рдВрдЧ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╡рд╣ рдЕрдкрдиреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рджреВрд░рд╕реНрде рдХрд╛рд░реНрдп рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред



рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рднреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдмреИрдХрдЕрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг (1 рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛), рддрд╛рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░реНрд╡рд░реЛрдВ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ (рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ), рдЖрджрд┐ рдмреИрдХрдЕрдк рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рдпрд╣ рддрд╛рдЬ рдХреА рдорджрдж рд╕реЗ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рднреА рд╣реИ, рддрд╛рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рдмреИрдХрдЕрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрди рдЬрд╛рдПред



рдкреБрдирд╢реНрдЪ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рддрд╛рдЬрд╛ рдмреИрдХрдЕрдк рд╣реЛ!



All Articles