рдпреВрдПрд╕рдмреА рдбреНрд░рд╛рдЗрд╡ рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛

рджрд┐рдП рдЧрдП:



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





рдЖрд╡рд╢реНрдпрдХ рдкреАрдЫреЗ рд╣рдЯрдирд╛ред рдореИрдВ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рдРрд╕реА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рдиреИрддрд┐рдХ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдорд╛рдирдХ рдФрд░ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдХрд░реНрдордЪрд╛рд░реА рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред



1. рдПрдХ рдпреВрдПрд╕рдмреА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рддрдереНрдп рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВ




рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ udv рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдШрдЯрдирд╛ рдХреЗ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдмрдирд╛рдПрдВ рдЬреЛ USB рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛:

touch /etc/udev/rules.d/usb.rules
      
      





Usb.rules рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:



 ACTION=="add", SUBSYSTEM=="block", ENV{ID_BUS}=="usb|mmc|memstick|ieee1394", RUN+="/bin/bash /etc/udev/usb_on.sh %E{ID_SERIAL_SHORT} %E{ID_MODEL} %E{ID_VENDOR}" ACTION=="remove", SUBSYSTEM=="block", ENV{ID_BUS}=="usb|mmc|memstick|ieee1394", RUN+="/bin/bash /etc/udev/usb_off.sh %E{ID_SERIAL_SHORT} %E{ID_MODEL} %E{ID_VENDOR}"
      
      





рдЬрд╣рд╛рдВ:



рд╕реНрдХреНрд░рд┐рдкреНрдЯ usb_on.sh рдФрд░ usb_off.sh udev рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:





рд╕реНрдХреНрд░рд┐рдкреНрдЯ usb_on.sh:

 /usr/bin/curl -d "host=$(hostname)&serial=$1&name=$2&vendor=$3&file=on&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php
      
      





рд╕реНрдХреНрд░рд┐рдкреНрдЯ usb_off.sh:

 /usr/bin/curl -d "host=$(hostname)&serial=$1&name=$2&vendor=$3&file=off&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php
      
      





рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗ 10.0.40.16/usb/input.php рдкрддреЗ рдкрд░ рдПрдХ HTTP POST рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ ( noproxy рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ 10.0.40.16 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛рдП)ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░ рдЗрд╕ POST рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:





2.Server рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЪрд▓ рд░рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ usb_on.sh рдФрд░ usb_off.sh рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА php рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рдлрд╝реЙрд░реНрдо рдФрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рд╣реЛрддрд╛ рд╣реИред



 <form action="" method="post" enctype="multipart/form-data"> <input type="submit" name="sub" value=""> <input type="text" name="host" maxlength=255 size=100> <input type="text" name="serial" maxlength=255 size=100> <input type="text" name="name" maxlength=255 size=100> <input type="text" name="vendor" maxlength=255 size=100> <textarea id="file" name="file"></textarea> </form>
      
      







рд╣реИрдВрдбрд▓рд░ рдПрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ usb рдЯреЗрдмрд▓ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ

 mysql_query("INSERT INTO `usb` (`id`, `date`, `host`, `ip`, `serial`, `name`, `vendor`, `file`) VALUES (NULL, '$time', '$_POST[host]', '$_SERVER[REMOTE_ADDR]', '$_POST[serial]', '$_POST[name]', '$_POST[vendor]', '$_POST[file]')");
      
      







рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛:



 CREATE TABLE IF NOT EXISTS `usb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` bigint(20) NOT NULL, `ip` varchar(15) COLLATE utf8_bin NOT NULL, `host` varchar(50) COLLATE utf8_bin NOT NULL, `serial` varchar(100) COLLATE utf8_bin NOT NULL, `name` varchar(100) COLLATE utf8_bin NOT NULL, `vendor` varchar(100) COLLATE utf8_bin NOT NULL, `file` text COLLATE utf8_bin, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
      
      







3. рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЪрд╛рд▓рди рдХреА рдирд┐рдЧрд░рд╛рдиреА


рдХрд┐рд╕реА рдХрдиреЗрдХреНрдЯреЗрдб рдорд╛рдзреНрдпрдо рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд┐рдП рдЧрдП рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЧрдИ рдереА:

 touch /var/tmp/usb.check #     check=1 while [ $check ] #   do if [ -f /var/tmp/usb.check ] #    then ACCESS='' #   CREATE='' MODIFY='' # ,    /media ,   , ,   ,      /var/tmp/usb.check ACCESS=`find /media -anewer /var/tmp/usb.check -type f` CREATE=`find /media -cnewer /var/tmp/usb.check -type f` MODIFY=`find /media -newer /var/tmp/usb.check -type f` if [ ! -z "$ACCESS" ] then ACCESS="access "$ACCESS #     /usr/bin/curl -d "host=$(hostname)&serial=$2&name=$3&vendor=$4&file=$ACCESS&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php fi if [ ! -z "$CREATE" ] then CREATE="create "$CREATE /usr/bin/curl -d "host=$(hostname)&serial=$2&name=$3&vendor=$4&file=$CREATE&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php fi if [ ! -z "$MODIFY" ] then MODIFY="modify "$MODIFY /usr/bin/curl -d "host=$(hostname)&serial=$2&name=$3&vendor=$4&file=$MODIFY&sub=true" --noproxy 10.0.40.16 http://10.0.40.16/usb/input.php fi fi touch /var/tmp/usb.check #   sleep 5 #  done
      
      







рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдЯреЛрд░рди рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓рддреА рд╣реИред

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

рдЫрд╡рд┐



4. рдкреАрд╕реА рдлреИрд▓ рдЧрдпрд╛


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

рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, StrictHostKeyChecking рдирд┐рд░реНрджреЗрд╢ рдХреЛ / etc / ssh / ssh_config рдореЗрдВ рдмрджрд▓реЗрдВ:

 StrictHostKeyChecking no
      
      





рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ ssh рдХреАрдЬрд╝ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реВрдЪреА рдореЗрдВ рдЬреБрдбрд╝ рдЬрд╛рдПред



рд╡рд┐рддрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реА:

 #!/bin/bash while read line; do array[$index]="$line" index=$(($index+1)) done < hosts.conf for ((a=0; a < ${#array[*]}; a++)) do remote=`echo ${array[$a]} | awk '{ print $1 }'` echo "$remote begin"; /usr/bin/sshpass -p "root_password" /usr/bin/scp /home/user/usb_mon/usb.rules admin@$remote:/etc/udev/rules.d/usb.rules /usr/bin/sshpass -p "root_password" /usr/bin/scp /home/user/usb_mon/*.sh admin@$remote:/etc/udev/ /usr/bin/sshpass -p "root_password" /usr/bin/scp /home/user/usb_mon/boot.local admin@$remote:/etc/rc.d/boot.local echo "$remote end"; done
      
      







рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдкреАрд╕реА рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЙрдЧ рдФрд░ рдмрд╛рдж рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 ./deploy.sh &> deploy.log &
      
      







рдкреБрдирд╢реНрдЪред рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛


рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:




All Articles