рдЙрдмрдВрдЯреВ рдХреЗрдВрджреНрд░реАрдХреГрдд рдкреИрдХреЗрдЬ рдЕрджреНрдпрддрди рдкреНрд░рдгрд╛рд▓реА

рд╣рд╛рдп рд╕рдм рд▓реЛрдЧ

рдпрджрд┐ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ? рдЦреБрдж рдЬрд░реВрд░ рд▓рд┐рдЦреЗрдВред

рд╣рд╛рд▓рдд:


рдЙрджреНрджреЗрд╢реНрдп:

  1. рджреВрд░рд╕реНрде рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдкрд░ рдкреИрдХреЗрдЬ рдЕрдкрдбреЗрдЯ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
  2. рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдкреИрдХреЗрдЬ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдЧ рдХрд░рдирд╛ред
  3. рдПрдХ / рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХрд╛ рд░рд┐рдореЛрдЯ рдЕрдкрдбреЗрдЯред

рд╕рдорд╛рдзрд╛рди рдХреЗ рд╡рд┐рдХрд▓реНрдк:


рдЪреВрдВрдХрд┐ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ - рдмреИрд╢ рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛:
ssh рдиреЗ @ IP -> рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХреА - рд╕рд░реНрд╡рд░ рд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ -> рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЬрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЙрдкрд▓рдмреНрдз рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдкреАрдПрд╕ рдЕрд╕рд▓реА рдирд╛рдо рдФрд░ рдЖрдИрдкреА рдХреЛ рдЧреБрдордирд╛рдореА рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╣рд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
/ root / uuman - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ред
../uuman/log - рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ (рдпрд╣ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдмреЙрд▓ рд╣реИ)ред
../../log/.menu_log - рджреВрд░рд╕реНрде рдорд╢реАрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдлрд╝реЛрд▓реНрдбрд░ред
рд╕реЗрдЯрдЕрдк - рджреВрд░рд╕реНрде рдорд╢реАрдиреЛрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ред
#!/usr/bin/expect -f set IP $argv #   set timeout -1 #     spawn ssh-copy-id -i /root/.ssh/id_rsa.pub adm@$IP expect -re "(yes/no)" # YES send "yes\r" #    expect -re "Password:" #  send "YOU_PASSWORD\r" #   expect -re "expecting." #  ssh spawn ssh adm@$IP expect -re "\\$ $" #  sudo  send "sudo -K\r" expect -re "\\$ $" # root send "sudo su\r" expect -re "password for" send "YOU_SUDO_PASSWORD\r" expect -re "# $" #  (  samba    nfs-common  cifs-utils) send "apt-get install -y apt-show-versions nfs-common\r" expect -re "# $" send "exit\r" expect -re "\\$ $" exit 0 

рдЕрджреНрдпрддрди - рдЙрдкрд▓рдмреНрдз рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ред
 #!/usr/bin/expect -f set IP [lrange $argv 0 0] set USERN [lrange $argv 1 1] set DATES [exec date "+%Y.%m.%d/%H:%M:%S"] #  ssh (adm    ) spawn ssh adm@$IP #   $ expect -re "\\$ $" #     sudo send "sudo -K\r" expect -re "\\$ $" # root send "sudo su\r" expect -re "password for" send "YOU_SUDO_PASSWORD\r" #   # expect -re "# $" #  ,    send "mkdir -m 777 /tmp/share > /dev/null 2>&1\r" expect -re "# $" # nfs  ( samba    ) send "mount.nfs 192.168.0.1:/root/uuman/log /tmp/share\r" expect -re "# $" #    send "date > /tmp/share/$IP.log\r" expect -re "# $" # ,      send "uname -a >> /tmp/share/$IP.log\r" expect -re "# $" #    send "echo Username:$USERN >> /tmp/share/$IP.log\r" expect -re "# $" #IP   send "echo IP:$IP >> /tmp/share/$IP.log\r" expect -re "# $" #    send "(echo -n Hostname:;hostname) >> /tmp/share/$IP.log\r" expect -re "# $" # Ubuntu   send "(cat /etc/issue.net) >> /tmp/share/$IP.log\r" expect -re "# $" #           send "(echo -n Count of packages for update:;apt-show-versions -u | wc -l) >> /tmp/share/$IP.log\r" expect -re "# $" #  send "echo >> /tmp/share/$IP.log\r" expect -re "# $" #       send "apt-show-versions -u | column -t >> /tmp/share/$IP.log\r" expect -re "# $" #     (  | IP | ubuntu_version | -  |  ) send "(echo -n $USERN;echo -n ' |' $IP '| ';cat /etc/issue.net | sed 's/ /_/g';echo -n AvailableUpdates\:;apt-show-versions -u | wc -l ;echo -n $DATES) > /tmp/share/.menu_log/$IP.log\r" expect -re "# $" #  send "umount -f /tmp/share\r" expect -re "# $" #  root send "history -c\r" expect -re "# $" #  root send "exit\r" expect -re "\\$ $" exit 0 

рдкреИрдХреЗрдЬ - рдЧреНрд░рд╛рд╣рдХ рдорд╢реАрдиреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ред
 #!/usr/bin/expect -f set IP [lrange $argv 0 0] set USERN [lrange $argv 1 1] set DATES [exec date "+%Y.%m.%d/%H:%M:%S"] #    set timeout -1 spawn ssh adm@$IP expect -re "\\$ $" send "sudo -K\r" expect -re "\\$ $" send "sudo su\r" expect -re "password for" send "YOU_SUDO_PASSWORD\r" expect -re "# $" #  send "apt-get -y upgrade\r" expect -re "# $" #    send "mkdir -m 777 /tmp/share > /dev/null 2>&1\r" expect -re "# $" send "mount.nfs 192.168.0.1:/root/uuman/log /tmp/share\r" expect -re "# $" send "date > /tmp/share/$IP.log\r" expect -re "# $" send "uname -a >> /tmp/share/$IP.log\r" expect -re "# $" send "echo IP:$IP >> /tmp/share/$IP.log\r" expect -re "# $" send "(echo -n Hostname:;hostname) >> /tmp/share/$IP.log\r" expect -re "# $" send "(cat /etc/issue.net) >> /tmp/share/$IP.log\r" expect -re "# $" send "(echo -n Count of packages for update:;apt-show-versions -u | wc -l) >> /tmp/share/$IP.log\r" expect -re "# $" send "echo >> /tmp/share/$IP.log\r" expect -re "# $" send "apt-show-versions -u | column -t >> /tmp/share/$IP.log\r" expect -re "# $" send "(echo -n $USERN;echo -n ' |' $IP '| ';cat /etc/issue.net | sed 's/ /_/g';echo -n AvailableUpdates\:;apt-show-versions -u | wc -l ;echo -n $DATES) > /tmp/share/.menu_log/$IP.log\r" expect -re "# $" send "umount /tmp/share\r" expect -re "# $" send "apt-get -y upgrade\r" expect -re "# $" send "history -c\r" expect -re "# $" send "exit\r" expect -re "\\$ $" exit 0 

uuman.sh - рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓ (рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓)ред
 #!/bin/bash #   DATE=`date "+%Y.%m.%d/%H:%M:%S"` #   LOCAL="/root/uuman/log" #   WORKD="/root/uuman" #[\]  spinner() { local pid=$1 local delay=0.25 while [ $(ps -eo pid | grep $pid) ]; do for i in \| / - \\; do printf ' [%c]\b\b\b\b' $i sleep $delay done done printf '\b\b\b\b' } #      UPDATEA() { #2012_11_23 DATEFN=`date "+%Y_%m_%d"` #     .     nfs chown -R nfsnobody:nfsnobody $LOCAL i=0 #    cat $WORKD/ip.txt | while read line; do USERN=`echo $line` # IP   IP=`echo $line | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'` #  if ping -c 1 -s 1 -W 1 $IP > /dev/null 2>&1; then i=`expr $i + 1` #    screen screen -A -m -d -S "upd$i" expect $WORKD/update $IP $USERN #     #screen -A -m -d -S "upd$i" expect $WORKD/setup $IP else #         #    echo "$DATE" >> $LOCAL/err.txt echo "$USERN - not connected" >> $LOCAL/err.txt echo >> $LOCAL/err.txt #    echo "$DATE | $USERN - not connected" >> $LOCAL/upd.txt echo >> $LOCAL/upd.txt #     echo "$DATE | $USERN - not connected" >> $LOCAL/UPD-$DATEFN.txt echo >> $LOCAL/UPD-$DATEFN.txt #  -   ,    not connected   NT=`cat $LOCAL/.menu_log/$IP.log | grep "AvailableUpdates"` if [ -z "$NT" ]; then echo -n "$USERN | Unknown | NotConnected | $DATE" > $LOCAL/.menu_log/$IP.log fi fi done #      ls $LOCAL | grep .log | while read TXT; do paste $LOCAL/$TXT >> $LOCAL/upd.txt echo >> $LOCAL/upd.txt #     paste $LOCAL/$TXT >> $LOCAL/UPD-$DATEFN.txt echo >> $LOCAL/UPD-$DATEFN.txt done } #     PACKAGEA() { #2012_11_23 DATEFN=`date "+%Y_%m_%d"` #     .     nfs chown -R nfsnobody:nfsnobody $LOCAL i=0 #    cat $WORKD/ip.txt | while read line; do USERN=`echo $line` # IP   IP=`echo $line | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'` #  if ping -c 1 -s 1 -W 1 $IP > /dev/null 2>&1; then i=`expr $i + 1` #    screen screen -A -m -d -S "upd$i" expect $WORKD/package $IP $USERN else #         #    echo "$DATE" >> $LOCAL/err.txt echo "$USERN - not connected" >> $LOCAL/err.txt echo >> $LOCAL/err.txt #    echo "$DATE | $USERN - not connected" >> $LOCAL/upd.txt echo >> $LOCAL/upd.txt #     echo "$DATE | $USERN - not connected" >> $LOCAL/UPD-$DATEFN.txt echo >> $LOCAL/UPD-$DATEFN.txt #  -   ,    not connected   NT=`cat $LOCAL/.menu_log/$IP.log | grep "AvailableUpdates"` if [ -z "$NT" ]; then echo -n "$USERN | Unknown | NotConnected | $DATE" > $LOCAL/.menu_log/$IP.log fi fi done #      ls $LOCAL | grep .log | while read TXT; do paste $LOCAL/$TXT >> $LOCAL/upd.txt echo >> $LOCAL/upd.txt #     paste $LOCAL/$TXT >> $LOCAL/UPD-$DATEFN.txt echo >> $LOCAL/UPD-$DATEFN.txt done } #   -   () MAIN() { rm -rf $LOCAL/MENU.txt ls $LOCAL/.menu_log | grep .log | while read MENU; do #    (    ) TEXT=`paste -s -d '|' $LOCAL/.menu_log/$MENU | sed 's/|/ | /g;s/-/|/g'` echo $TEXT >> $LOCAL/MENU.txt done #      clear && cat $LOCAL/MENU.txt | column -t } #  MENU() { echo echo "1.Get update-information for Ubuntu-host (by custom IP-address)" echo "2.Get update-information for all Ubuntu-hosts (uses file with IP-addresses)" echo "3.Update packages for Ubuntu-host (by custom IP-address)" echo "4.Update packages for all hosts (uses file with IP-addresses)" echo "5.View error-connection log" echo "6.Refresh" echo "7.Exit" read SELECT case $SELECT in 1) #   IP echo -n "Enter IP:" read IP #     .     nfs chown -R nfsnobody:nfsnobody $LOCAL #   if ping -c 1 -s 1 -W 1 $IP > /dev/null 2>&1; then #   IP     USERN=`cat $WORKD/ip.txt | grep "$IP" | sed 's/ .*//'` $WORKD/update $IP $USERN > /dev/null 2>&1 & spinner $! cat $LOCAL/$IP.log else #      echo "Computer is not online" echo "$DATE" >> $LOCAL/err.txt echo "$IP - not connected" >> $LOCAL/err.txt echo >> $LOCAL/err.txt fi MENU ;; 2) #     UPDATEA > /dev/null 2>&1 & spinner $! #      ,       #sleep 5s MAIN MENU ;; 3) #  IP echo "Enter IP:" read IP #     .     nfs chown -R nfsnobody:nfsnobody $LOCAL if ping -c 1 -s 1 -W 1 $IP > /dev/null 2>&1; then #   IP     USERN=`cat $WORKD/ip.txt | grep "$IP" | sed 's/ .*//'` $WORKD/package $IP $USERN > /dev/null 2>&1 & spinner $! cat $LOCAL/$IP.log else echo "Computer is not online" echo "$DATE" >> $LOCAL/err.txt echo "$IP - not connected" >> $LOCAL/err.txt echo >> $LOCAL/err.txt fi MENU ;; 4) #   PACKAGEA > /dev/null 2>&1 & spinner $! #      ,       #sleep 5s MAIN MENU ;; 5) #   cat $LOCAL/err.txt MENU ;; 6) # MAIN MENU ;; 7) exit 0 ;; *) MENU esac } #    #  ARG=$1 case $ARG in #     check) UPDATEA exit 0 ;; #   update) PACKAGEA exit 0 ;; *) MAIN MENU ;; esac 

ip.txt - рдЖрдзрд╛рд░ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - IP рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 - 192.168.0.1
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2 - 192.168.0.2
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 3 - 192.168.0.3
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 4 - 192.168.0.4


рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ uuman.sh рдореЗрдВ рдирд┐рдореНрди рдЪрд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ:
 #   LOCAL="/root/uuman/log" #   WORKD="/root/uuman" 

рд╕реЗрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧреАред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, uuman.sh рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ:
 screen -A -m -d -S "upd$i" expect $WORKD/update $IP $USERN 
рдФрд░ рдЕрд╕рд╣рдЬрддрд╛:
 #screen -A -m -d -S "upd$i" expect $WORKD/setup $IP 

рдСрдЯреЛ рдореЛрдб:
$WORKD/uuman.sh check - рдЕрдкрдбреЗрдЯ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП ip.txt рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХреА рдЬрд╛рдБрдЪред
$WORKD/uuman.sh update - рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХреЛ ip.txt рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

рдкрд░рд┐рдгрд╛рдо:

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

рдпреБрдкреАрдбреА:
рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЕрдм ssh-key рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред
рдПрдХ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
 ssh-keygen -t rsa 

рд╕реЗрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдкрд░ рд░рдЦрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In160579/


All Articles