рдШреБрдЯрдиреЗ рдкрд░ рд╡реАрдУрдЖрдИрдкреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдЯреЛ-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдгрд╛рд▓реА

рдЬрдм рдЖрдкрдХреЗ рдШрд░ рдореЗрдВ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдмрд╣реБрдд рдмрд╛рд░ рдЖрддреА рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдпрд╣ рдХрд╛рд░реНрдп рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдирдХреНрд╕ рдкрд░, cengine, рдХрдардкреБрддрд▓реА, рдФрд░ рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡реАрдУрдЖрдИрдкреА рдбрд┐рд╡рд╛рдЗрд╕ рдереЗ рдЬрд┐рдирдореЗрдВ рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рдХреБрдЫ рдмрджрд▓рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛: рдпрд╛ рддреЛ рдПрдХ рдирдВрдмрд░, рдлрд┐рд░ рдПрдХ рдбрд╛рдпрд▓рд░ рдпреЛрдЬрдирд╛, рдлрд┐рд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╢рд┐рд▓рд╛рд▓реЗрдЦ, рдЖрджрд┐ред
рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдСрдЯреЛрдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рднреА рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рд╛рдВ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдлрд┐рд░ рдЖрдк рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдЖрдпрд╛ ...


рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ:


рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рд▓рдЧрднрдЧ рд╕рднреА рдЙрдкрдХрд░рдг рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдереЗ рд╡реЗ рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдереЗ, рдФрд░ рдЬреЛ рдХреБрдЫ рдкреНрд░рддрд┐рдпрд╛рдВ рдЕрд▓рдЧ рдереАрдВ, рд╡реЗ рд╕реНрдХреНрд░реИрдк рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкрд╣рд▓реЗ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рдереАрдВред рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ Linksys рд╕реЗ рдереЗ: PAP2T, SPA3102, SPA901, SPA921, SPA941, SPA942ред рдмрд╛рдж рдореЗрдВ рдирдП рд╕рд┐рд╕реНрдХреЛ SPA502 рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ (рд╕рд┐рд╕реНрдХреЛ рдиреЗ рд▓рд┐рдВрдХреНрд╕ рдЦрд░реАрджрд╛) рдХреЗ рдмрд╛рдж
рдЗрди рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдХреИрд╕реЗ рдкрд░реНрдЪреА рдХреА рдЬрд╛рдПред

рд╣рдорд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдпрд╣рд╛рдВ) device_ip/admin/spacfg.xml device_ip/admin/spacfg.xml - рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рдпрд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдХрд╣реАрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рд╡рд┐рдХрд▓реНрдк рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ xml рдлрд╝рд╛рдЗрд▓ рд╣реИред рдЖрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ tftp рдпрд╛ http рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ, рдореВрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рдЙрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬреЛ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдереА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдкред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рдореНрди рдСрдЯреЛрдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдСрдкрд░реЗрд╢рди рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА:

рдЫрд╡рд┐

рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ ( generator.sh templates {modelName, common/start, common/network, common/end} ) рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред templates {modelName, common/start, common/network, common/end} рдлрд╝рд╛рдЗрд▓ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЯреБрдХрдбрд╝реЗ templates {modelName, common/start, common/network, common/end} рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗред
рдПрдХ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ ( pusher.sh ) - http рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдорд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИ:
  http: // server_ip / configs 
рдФрд░ рдлрд┐рд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
  curl --digest -u USERNAME: PASSWORD http: // device_IP / admin / resync?  http: //server_ip/configs/CONFIGFILE.xml 


рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рд╣реИрдВ:

рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝рдирд╛:
1. DNS рдореЗрдВ рдПрдХ рдЙрдкрдХрд░рдг рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝реЗрдВ
2. рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ - рдЙрд╕ рдкрд░ рдЕрдкрдирд╛ рдЖрдИрдкреА рдкрддрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ (рд╣рдо рд╡реАрдУрдЖрдИрдкреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдбреАрдПрдЪрд╕реАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкрд╛рд╕рд╡рд░реНрдб
3. devices.list рдПрдХ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВред рдлрд╝рд╛рдЗрд▓ рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ, рд▓рд╛рдЗрди рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
DEVICE_MODEL|NETWORK_NAME|LINE1_DESCR|LINE1_NUMBER|LINE1_PASS|LINE2_DESCR|LINE2_NUMBER|LINE2_PASS|STATION_NAME|USER_PASSWORD
рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░ рдмрд╕ рдЦрд╛рд▓реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдП рд░рдЦреА рдЬрд╛рддреА рд╣реИред
4. generator.sh рдЪрд▓рд╛рдПрдВ
5. pusher.sh single NETWORK_NAME_IN_DNS рдЪрд▓рд╛рдПрдВ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд▓реЙрдЧ рджреЗрдЦреЗрдВ

рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдирдВрдмрд░ рдмрджрд▓реЗрдВ:
1. devices.list рдореЗрдВ рд▓рд╛рдЗрди рдмрджрд▓реЗрдВред рдлрд╝рд╛рдЗрд▓ рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред
2. generator.sh
3. pusher.sh single NETWORK_NAME_IN_DNS рдЪрд▓рд╛рдПрдВ

рд╕рднреА рд╡реАрдУрдЖрдИрдкреА рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдмрджрд▓реЗрдВ:
1. generator.sh рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред generator.sh - рдЗрд╕рдореЗрдВ рдПрдХ рдЪрд░ рд╣реИ рдЬреЛ рдбрд╛рдпрд▓ рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
2. generator.sh
3. pusher.sh all рдЪрд▓рд╛рдПрдВред рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдпрд╛ рдЕрдкрдиреЗ syslog рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЙрдЧ рдХреЛ рджреЗрдЦреЗрдВ (рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд╣реИ, рдареАрдХ рд╣реИ?)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣: tail -f /var/log/messages | egrep -i "(pap2t|spa-)" tail -f /var/log/messages | egrep -i "(pap2t|spa-)"

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

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

рдлрд┐рд▓рд╣рд╛рд▓, рдореЗрд░рд╛ рдСрдЯреЛрдХреИрдлрд┐рдЧреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛, рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реМрднрд╛рдЧреНрдп рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА:
devices.list
 ################################################## ################################################## #########################################
 # LINE FORMAT: DEVICE_MODEL | NETWORK_NAME | LINE1_DES-07ред LINE1__NUMBER | LINE1_PASS | LINE2_DESCR | LINE2_NUMBER | LINE2_PASS | STATION_NAME | USER_PASSWORD #
 ################################################## ################################################## #########################################

 #################
 # рд╡реЙрдпрд╕ рдЧреЗрдЯрд╡реЗ #
 #################

 # PAP2T
 PAP2T | voip1.f3r1 | рд░рд┐рд╕реЗрдкреНрд╢рди 1 | 3000 | 3000рдкрд╛рд╕ | рд░рд┐рд╕реЗрдкреНрд╢рди 2 | 3001 | 3001 рдмрд╛рдИрдкрд╛рд╕
 PAP2T | voip2.f3r1 | рд╡рд┐рддреНрдд | 3030 | 3030рдкрд╛рд╕ |||


 # рдПрд╕рдкреАрдП 3102
 SPA3102 | voip0.f3r1 | рдмреИрдардХ рдХрдХреНрд╖ | 3131 | 3131рдкрд╛рд╕

 ###############
 # рд╡реЙрдпрд╕ рдлреЛрди #
 ###############

 # рдПрд╕рдкреАрдП реп режрез
 рдПрд╕рдкреАрдП 901 | vph0.f3lr2 | Zavhoz | 3040 | 3040рдкрд╛рд╕ |||

 # рдПрд╕рдкреАрдП 921
 рдПрд╕рдкреАрдП реп реирез | vph0.f3r3 | рдмреЙрд╕ | рейрежрелреж | рейрежрелреж рдкрд╛рд░ |||| рд╢реАрдл | резреирейрек

 # рдПрд╕рдкреАрдП реп рекрез
 рдПрд╕рдкреАрдП реп рекрез | vph0.f3r4 | рдПрдбрдорд┐рди | рейрежремреж | рейрежремреж рдкрд╛рд░ |||| рдПрдбрдорд┐рди | рейрежремреж

 # рдПрд╕рдкреАрдП реп рекреи
 SPA941 | vph0.f4r1 | Manager1 | 3080 | 3080pass |||| Manager1

 # рд╕рд┐рд╕реНрдХреЛ SPA502G
 SPA502G | vph1.f4r1 | Manager2 | 3090 | 3090pass |||| Manager2


generator.sh
 #! / рдмрд┐рди / рдмреИрд╢

 ########################################### рд╕рдВрдХреНрд░рд┐рдпрд╛ рдЕрдиреБрднрд╛рдЧ ##### ########################################

 adminPass = 'qwerty123'
 userPass = 'qwerty123'

 DialPlan = '(* 8S0 | * xx | 1 [0-9] [0-9] S0 | [95] [0-9] xxS0 | 2xxxxxxS0 | 0 [3-7] xxxxxxxxS0ред [[89] x [1] -9] xxxxxxS0 | 0 [89] 00xxxxxxxS0 | 02xxxxxxxS0 | xxxxxxxxxxxред)
 sipProxy = 'sip.yourdomain.com'

 # рдпрд╣рд╛рдБ SPA3102 рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ PSTN рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ
 DialPlanSPA3102 = '(xxред)'
 sipProxySPA3102 = $ sipProxy

 ############################################ ############### рдЗрд╕ ## рдХреЗ рдиреАрдЪреЗ рд╕рдВрдкрд╛рджрди рди рдХрд░реЗрдВ ####################################

 curPath = `dirname $ {0}`

 devicesList = $ {curPath} /devices.list


 рдмрд┐рд▓реНрд▓реА $ {devicesList} |  sed '/ * # / d;  / ^ * $ / d '|  рдкрдврд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐;
     рдХрд░рдирд╛
	 рдореЙрдбрд▓ = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд▓рд╛рдЗрди} |  cut -f1 -d '|'  |  tr '[: lower:]' '[: Upper:]' ''
	 networkName = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд▓рд╛рдЗрди} |  cut -f2 -d '|'  `
	 ipStr = `рдХрд┐рд╕реА рднреА $ {networkName} рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ
         рдЕрдЧрд░ [`рдЧреВрдВрдЬ $ {ipStr} |  grep 'рдирд╣реАрдВ рдорд┐рд▓рд╛:' |  wc -l` -gt реж] 
    	     рддреЛ 
	         рдЗрдХреЛ "рдПрд░рд░: $ {networkName} DNS рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред"
	         рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 1
	     рдЕрдиреНрдпрдерд╛
		 ip = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {ipStr} |  cut -f4 -d '' ``
	 рдлрд╛рдИ
	 рдЗрдХреЛ-рдПрди "рдбрд┐рд╡рд╛рдЗрд╕ рдЖрдИрдкреА - $ {рдЖрдИрдкреА}ред"
	 line1Descr = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд░реЗрдЦрд╛} |  cut -f3 -d '|'  `
         line1Phone = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд░реЗрдЦрд╛} |  cut -f4 -d '|'  `
         line1Pass = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рдкрдВрдХреНрддрд┐} |  cut -f5 -d '|'  `
	 line2Descr = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд░реЗрдЦрд╛} |  cut -f6 -d '|'  `
	 line2Phone = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд░реЗрдЦрд╛} |  cut -f7 -d '|'  `
         line2Pass = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рдкрдВрдХреНрддрд┐} |  cut -f8 -d '|'  `
	 рд╕реНрдЯреЗрд╢рдирдирд╛рдо = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд▓рд╛рдЗрди} |  рдХрдЯ -f9 -d '|'  `
	 userPassFromConfig = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рдкрдВрдХреНрддрд┐} |  cut -f10 -d '|'  `
	 рдЕрдЧрд░ ["$ {userPassFromConfig}"! = ""]
	     рддреЛ
		 userPass = $ {userPassFromConfig}
		 рдЗрдХреЛ-рдПрди "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕ рд╕реЗрдЯ рди рдХрд░реЗрдВред"
	 рдлрд╛рдИ
	
	 рдорд╛рдорд▓рд╛ "$ {рдореЙрдбрд▓}" рдореЗрдВ
	 PAP2T)
	     рдЗрдХреЛ "$ {рдореЙрдбрд▓} рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ - $ {networkName} ..." 
	     outputFile = $ {curPath} / configs / $ {рдореЙрдбрд▓} - $ {ip} .xml
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рд╢реБрд░реБрдЖрдд> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдиреЗрдЯрд╡рд░реНрдХ >> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / pap2t >> $ {outputFile}

	     # рдпрд╣рд╛рдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
	     рдЗрдХреЛ '<Static_IP ua = "rw">' $ {ip} '</ Static_IP>' >> $ {outputFile}
	     рдЗрдХреЛ '<HostName ua = "rw">' $ {networkName} '</ HostName>' >> $ {outputFile}

	     рдЧреВрдВрдЬ '<Admin_Passwd ua = "na">' $ {adminPass} '</ admin_Passwd>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_Password ua = "rw"> $ {userPass}' </ User_Password> '>> $ {outputFile}
	    
	     рдЗрдХреЛ '<Display_Name_1_ ua = "na">' $ {line1Descr} '</ Display_Name_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_1_ ua = "na">' $ {line1Phone} '</ User_ID_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Password_1_ ua = "na">' $ {line1Pass} '</ Password_1_>' >> $ {outputFile}

	     рдЗрдХреЛ '<Display_Name_2_ ua = "na">' $ {line2Descr} '</ Display_Name_2_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_2_ ua = "na">' $ {line2Phone} '</ User_ID_2_>' >> $ {outputFile}
	     рдЗрдХреЛ '<Password_2_ ua = "na">' $ {line2Pass} '</ Password_2_>' >> $ {outputFile}
            
	     рдЗрдХреЛ '<Dial_Plan_1_ ua = "na">' $ {DialPlan} '</ Dial_Plan_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Proxy_1_ ua = "na">' $ {sipProxy} '</ Proxy_1_>' >> $ {outputFile}

	     рдЗрдХреЛ '<Dial_Plan_2_ ua = "na">' $ {DialPlan} '</ Dial_Plan_2_>' >> $ {outputFile}
	     рдЗрдХреЛ '<Proxy_2_ ua = "na">' $ {sipProxy} '</ Proxy_2_>' >> $ {outputFile}

	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдЕрдВрдд >> $ {outputFile}
	     ;;

	 SPA3102)
	     рдЗрдХреЛ "$ {рдореЙрдбрд▓} рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ - $ {networkName} ..." 
	     outputFile = $ {curPath} / configs / $ {рдореЙрдбрд▓} - $ {ip} .xml
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рд╢реБрд░реБрдЖрдд> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдиреЗрдЯрд╡рд░реНрдХ >> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / Spa3102 >> $ {outputFile}

	     # рдпрд╣рд╛рдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
	     рдЗрдХреЛ '<Static_IP ua = "rw">' $ {ip} '</ Static_IP>' >> $ {outputFile}
	     рдЗрдХреЛ '<HostName ua = "rw">' $ {networkName} '</ HostName>' >> $ {outputFile}

	     рдЧреВрдВрдЬ '<Admin_Passwd ua = "na">' $ {adminPass} '</ admin_Passwd>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_Password ua = "rw"> $ {userPass}' </ User_Password> '>> $ {outputFile}
	    
	     рдЗрдХреЛ '<Display_Name_1_ ua = "na">' $ {line1Descr} '</ Display_Name_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_1_ ua = "na">' $ {line1Phone} '</ User_ID_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Password_1_ ua = "na">' $ {line1Pass} '</ Password_1_>' >> $ {outputFile}

	     рдЗрдХреЛ '<Display_Name_2_ ua = "na">' $ {line2Descr} '</ Display_Name_2_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_2_ ua = "na">' $ {line2Phone} '</ User_ID_2_>' >> $ {outputFile}
	     рдЗрдХреЛ '<Password_2_ ua = "na">' $ {line2Pass} '</ Password_2_>' >> $ {outputFile}
            
	     рдЗрдХреЛ '<Dial_Plan_1_ ua = "na">' $ {DialPlan} '</ Dial_Plan_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Proxy_1_ ua = "na">' $ {sipProxy} '</ Proxy_1_>' >> $ {outputFile}
	    
    	     рдЧреВрдВрдЬ '<Dial_Plan_1_2_ ua = "na">' $ {dialPlanSPA3102} '</ Dial_Plan_1_2_>' >> $ {outputFile}
	     рдЗрдХреЛ '<Proxy_2_ ua = "na">' $ {sipProxySPA3102} '</ Proxy_2_>' >> $ {outputFile}

	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдЕрдВрдд >> $ {outputFile}
	     ;;

	 SPA901)
	     рдЗрдХреЛ "$ {рдореЙрдбрд▓} рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ - $ {networkName} ..." 
	     outputFile = $ {curPath} / configs / $ {рдореЙрдбрд▓} - $ {ip} .xml
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рд╢реБрд░реБрдЖрдд> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдиреЗрдЯрд╡рд░реНрдХ >> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / Spa901 >> $ {outputFile}

	     # рдпрд╣рд╛рдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрдЯрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
	     рдЗрдХреЛ '<Static_IP ua = "rw">' $ {ip} '</ Static_IP>' >> $ {outputFile}
	     рдЗрдХреЛ '<HostName ua = "rw">' $ {networkName} '</ HostName>' >> $ {outputFile}

	     рдЧреВрдВрдЬ '<Admin_Passwd ua = "na">' $ {adminPass} '</ admin_Passwd>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_Password ua = "rw"> $ {userPass}' </ User_Password> '>> $ {outputFile}
	    
	     рдЗрдХреЛ '<Display_Name_1_ ua = "na">' $ {line1Descr} '</ Display_Name_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_1_ ua = "na">' $ {line1Phone} '</ User_ID_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Password_1_ ua = "na">' $ {line1Pass} '</ Password_1_>' >> $ {outputFile}

	     рдЗрдХреЛ '<Dial_Plan_1_ ua = "na">' $ {DialPlan} '</ Dial_Plan_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Proxy_1_ ua = "na">' $ {sipProxy} '</ Proxy_1_>' >> $ {outputFile}

	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдЕрдВрдд >> $ {outputFile}
	     ;;

	 SPA921)
	     рдЗрдХреЛ "$ {рдореЙрдбрд▓} рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ - $ {networkName} ..." 
	     outputFile = $ {curPath} / configs / $ {рдореЙрдбрд▓} - $ {ip} .xml
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рд╢реБрд░реБрдЖрдд> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдиреЗрдЯрд╡рд░реНрдХ >> $ {outputFile}
	     #cat $ {curPath} / рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / Spa921 >> $ {outputFile}
    	    
	     # рдпрд╣рд╛рдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрдЯрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
	     рдЗрдХреЛ '<Static_IP ua = "rw">' $ {ip} '</ Static_IP>' >> $ {outputFile}
	     рдЗрдХреЛ '<HostName ua = "rw">' $ {networkName} '</ HostName>' >> $ {outputFile}
	    
	     рдЧреВрдВрдЬ '<Admin_Passwd ua = "na">' $ {adminPass} '</ admin_Passwd>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_Password ua = "rw"> $ {userPass}' </ User_Password> '>> $ {outputFile}

	     рдЗрдХреЛ '<рд╕реНрдЯреЗрд╢рди_рдирд╛рдо ua = "рдирд╛">' $ {рд╕реНрдЯреЗрд╢рдирдирд╛рдо} "</ рд╕реНрдЯреЗрд╢рди_рдирд╛рдо> '>> $ {рдЖрдЙрдЯрдкреБрдЯрдлрд╛рдЗрд▓}
	    
	     рдЗрдХреЛ '<Display_Name_1_ ua = "na">' $ {line1Descr} '</ Display_Name_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_1_ ua = "na">' $ {line1Phone} '</ User_ID_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Password_1_ ua = "na">' $ {line1Pass} '</ Password_1_>' >> $ {outputFile}

	     рдЗрдХреЛ '<Dial_Plan_1_ ua = "na">' $ {DialPlan} '</ Dial_Plan_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Proxy_1_ ua = "na">' $ {sipProxy} '</ Proxy_1_>' >> $ {outputFile}

	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдЕрдВрдд >> $ {outputFile}
	     ;;

	 SPA941)
	     рдЗрдХреЛ "$ {рдореЙрдбрд▓} рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ - $ {networkName} ..." 
	     outputFile = $ {curPath} / configs / $ {рдореЙрдбрд▓} - $ {ip} .xml
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рд╢реБрд░реБрдЖрдд> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдиреЗрдЯрд╡рд░реНрдХ >> $ {outputFile}
	     # рдХреИрдЯ $ {рдХрд░рдкрд╛рде} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рд╕реНрдкрд╛ 941 >> $ {рдЖрдЙрдЯрдкреБрдЯрдлрд╛рдЗрд▓}

	     # рдпрд╣рд╛рдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
	     рдЗрдХреЛ '<Static_IP ua = "rw">' $ {ip} '</ Static_IP>' >> $ {outputFile}
	     рдЗрдХреЛ '<HostName ua = "rw">' $ {networkName} '</ HostName>' >> $ {outputFile}

	     рдЧреВрдВрдЬ '<Admin_Passwd ua = "na">' $ {adminPass} '</ admin_Passwd>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_Password ua = "rw"> $ {userPass}' </ User_Password> '>> $ {outputFile}

	     рдЗрдХреЛ '<рд╕реНрдЯреЗрд╢рди_рдирд╛рдо ua = "рдирд╛">' $ {рд╕реНрдЯреЗрд╢рдирдирд╛рдо} "</ рд╕реНрдЯреЗрд╢рди_рдирд╛рдо> '>> $ {рдЖрдЙрдЯрдкреБрдЯрдлрд╛рдЗрд▓}
	    
	     рдЗрдХреЛ '<Display_Name_1_ ua = "na">' $ {line1Descr} '</ Display_Name_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_1_ ua = "na">' $ {line1Phone} '</ User_ID_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Password_1_ ua = "na">' $ {line1Pass} '</ Password_1_>' >> $ {outputFile}

	     рдЗрдХреЛ '<Display_Name_2_ ua = "na">' $ {line2Descr} '</ Display_Name_2_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_2_ ua = "na">' $ {line2Phone} '</ User_ID_2_>' >> $ {outputFile}
	     рдЗрдХреЛ '<Password_2_ ua = "na">' $ {line2Pass} '</ Password_2_>' >> $ {outputFile}
            
	     рдЗрдХреЛ '<Dial_Plan_1_ ua = "na">' $ {DialPlan} '</ Dial_Plan_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Proxy_1_ ua = "na">' $ {sipProxy} '</ Proxy_1_>' >> $ {outputFile}

	     рдЗрдХреЛ '<Dial_Plan_2_ ua = "na">' $ {DialPlan} '</ Dial_Plan_2_>' >> $ {outputFile}
	     рдЗрдХреЛ '<Proxy_2_ ua = "na">' $ {sipProxy} '</ Proxy_2_>' >> $ {outputFile}

	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдЕрдВрдд >> $ {outputFile}
	     ;;
	
	 SPA502G)
	     рдЗрдХреЛ "$ {рдореЙрдбрд▓} рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ - $ {networkName} ..." 
	     outputFile = $ {curPath} / configs / $ {рдореЙрдбрд▓} - $ {ip} .xml
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рд╢реБрд░реБрдЖрдд> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдиреЗрдЯрд╡рд░реНрдХ >> $ {outputFile}
	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / Spa502g >> $ {outputFile}

	     # рдпрд╣рд╛рдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрдЯрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
	     рдЗрдХреЛ '<Static_IP ua = "rw">' $ {ip} '</ Static_IP>' >> $ {outputFile}
	     рдЗрдХреЛ '<HostName ua = "rw">' $ {networkName} '</ HostName>' >> $ {outputFile}

	     рдЧреВрдВрдЬ '<Admin_Passwd ua = "na">' $ {adminPass} '</ admin_Passwd>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_Password ua = "rw"> $ {userPass}' </ User_Password> '>> $ {outputFile}
	    
	        
	     рдЗрдХреЛ '<рд╕реНрдЯреЗрд╢рди_рдирд╛рдо ua = "рдирд╛">' $ {рд╕реНрдЯреЗрд╢рдирдирд╛рдо} "</ рд╕реНрдЯреЗрд╢рди_рдирд╛рдо> '>> $ {рдЖрдЙрдЯрдкреБрдЯрдлрд╛рдЗрд▓}
	     # <рд╕реНрдЯреЗрд╢рди_рдбрд┐рд╕рдкреНрд▓реЗ_рдирд╛рдо ua = "рдирд╛"> </ рд╕реНрдЯреЗрд╢рди_рдбрд┐рд╕рдкреНрд▓реЗ_рдирд╛рдо>
	    
	     рдЗрдХреЛ '<Display_Name_1_ ua = "na">' $ {line1Descr} '</ Display_Name_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<User_ID_1_ ua = "na">' $ {line1Phone} '</ User_ID_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Password_1_ ua = "na">' $ {line1Pass} '</ Password_1_>' >> $ {outputFile}

	     рдЗрдХреЛ '<Dial_Plan_1_ ua = "na">' $ {DialPlan} '</ Dial_Plan_1_>' >> $ {outputFile}
	     рдЧреВрдВрдЬ '<Proxy_1_ ua = "na">' $ {sipProxy} '</ Proxy_1_>' >> $ {outputFile}

	     рдмрд┐рд▓реНрд▓реА $ {curPath} / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдЖрдо / рдЕрдВрдд >> $ {outputFile}
	     ;;


	 esac    
	
     рдХрд┐рдпрд╛ 


pusher.sh
 #! / рдмрд┐рди / рдмреИрд╢

 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
 рдкрд╛рд╕ = qwerty123
 sourceLink = "http://192.168.50.10/configs"

 configsPath = "` dirname $ {0} `/ configs"

 cp $ {configsPath} / *ред xml / var / www / html / configs


 рдХреЗрд╕ $ 1 рдореЗрдВ
     рд╕рдм)
         ls -1 $ {configsPath} |  рдкрдврд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐;
	 рдХрд░рдирд╛
	     deviceIP = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд▓рд╛рдЗрди} |  cut -f2 -d- |  cut -f1-4 -d.`
	     рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "$ {deviceIP} _______________________________________________________________________________"
	     curl --digest -u $ {user}: $ {pass} http: // $ {deviceIP} / admin / resync? $ {sourceLink} / $ {line}
         рдХрд┐рдпрд╛
     ;;
     рдПрдХрд▓)
         networkName = $ 2
	 ipStr = `рдХрд┐рд╕реА рднреА $ {networkName} рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ
         рдЕрдЧрд░ [`рдЧреВрдВрдЬ $ {ipStr} |  grep 'рдирд╣реАрдВ рдорд┐рд▓рд╛:' |  wc -l` -gt реж] 
    	     рддреЛ 
	         рдЗрдХреЛ "рдПрд░рд░: $ {networkName} DNS рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред"
	         рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 1
	     рдЕрдиреНрдпрдерд╛
		 ip = `рдЗрдХреЛ $ {ipStr} |  cut -f4 -d '' ``
	 рдлрд╛рдИ

         ls -1 $ {configsPath} |  grep $ {ip} |  рдкрдврд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐;
	 рдХрд░рдирд╛
	     deviceIP = `рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ $ {рд▓рд╛рдЗрди} |  cut -f2 -d- |  cut -f1-4 -d.`
	     рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "$ {deviceIP} _______________________________________________________________________________"
	     curl --digest -u $ {user}: $ {pass} http: // $ {deviceIP} / admin / resync? $ {sourceLink} / $ {line}
         рдХрд┐рдпрд╛
     ;;
     *)
	 рдЗрдХреЛ "рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:"
	 рдЧреВрдВрдЬ "* $ {0} рд╕рднреА * - рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкреНрд░рд╛рд╡рдзрд╛рди рдХреЗ рд▓рд┐рдП"
	 рдЗрдХреЛ "* $ {0} рдПрдХрд▓ NETWORK_NAME_IN_DNS * - рдПрдХрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкреНрд░рд╛рд╡рдзрд╛рди рдХреЗ рд▓рд┐рдП"
     ;;
 esac


рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / pap2t
  <Ring_Waveform ua = "na"> Trapezoid </ Ring_Waveform> 


рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рд╕реНрдкрд╛ 3102
  <Ring_Waveform ua = "na"> Trapezoid </ Ring_Waveform>
   <FAX_Line_Toggle_Code ua = "na"> </ FAX_Line_Toggle_Code> 


рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / Spa502g
  <Paging_Code ua = "na"> </ Paging_Code>
 <Call_Park_Code ua = "na"> </ Call_Park_Code>
 <Call_UnPark_Code ua = "na"> </ Call_UnPark_Code>
 <Call_Pickup_Code ua = "na"> </ Call_Pickup_Code>
 <Group_Call_Pickup_Code ua = "na"> </ Group_Call_Pickup -Code>
 <Enable_CDP ua = "na"> рдирд╣реАрдВ </ Enable_CDP> 


рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рд╕реНрдкрд╛ 901
<Paging_Code ua="na"></Paging_Code>
<Call_Park_Code ua="na"></Call_Park_Code>
<Call_UnPark_Code ua="na"></Call_UnPark_Code>
<Call_Pickup_Code ua="na"></Call_Pickup_Code>


рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / рдЖрдо / рд╢реБрд░реВ
  <? xml рд╕рдВрд╕реНрдХрд░рдг = "1.0" рдПрдиреНрдХреЛрдбрд┐рдВрдЧ = "UTF-8" рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди = "рд╣рд╛рдБ"?>
 <рдлреНрд▓реИрдЯ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓> 


рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / рдЖрдо / рдиреЗрдЯрд╡рд░реНрдХ
   <Resteded_Access_Domains ua = "na"> </ Restricted_Access_Domains>
   <Enable_Web_Server ua = "na"> рд╣рд╛рдВ </ enable_Web_Server>
   <Web_Server_Port ua = "na"> 80 </ Web_Server_Port>
   <Enable_Web_Admin_Access ua = "na"> рд╣рд╛рдВ </ enable_Web_Admin_Access>
   <DHCP ua = "rw"> рдирд╣реАрдВ </ DHCP>
   <NetMask ua = "rw"> 255.255.255.0 </ NetMask>
   <рдЧреЗрдЯрд╡реЗ ua = "rw"> 192.168.50.254 </ рдЧреЗрдЯрд╡реЗ>
   <рдбреЛрдореЗрди ua = "rw"> yourdomain.com </ рдбреЛрдореЗрди>
   <Primary_DNS ua = "rw"> 192.168.71.3 </ Primary_DNS>
   <рдЧреМрдг_DNS ua = "rw"> 192.168.71.6 </ рдЧреМрдг_DNS>
   <Primary_NTP_Server ua = "na"> ntp.yourdomain.com </ Primary_NTP_Server>
   <Secondary_NTP_Server ua = "na"> ntp2.yourdomain.com </ рдЧреМрдг_NTP_Server>
   <Syslog_Server ua = "na"> syslog.yourdomain.com </ Syslog_Server>
   <DNS_Server_Order ua = "na"> рдореИрдиреБрдЕрд▓ </ DNS_Server_Order>
   <DNS_Query_Mode ua = "na"> рд╕рдорд╛рдирд╛рдВрддрд░ </ DNS_Query_Mode>
   <Debug_Server ua = "na"> </ Debug_Server>
   <Debug_Level ua = "na"> 0 </ Debug_Level>
   <Provision_Enable ua = "na"> рд╣рд╛рдБ </ Provision_Enable>
   <Resync_On_Reset ua = "na"> рдирд╣реАрдВ </ Resync_On_Reset>
   <Resync_Periodic ua = "na"> 3600 </ Resync_Periodic>
   <Profile_Rule ua = "na"> / init.cfg </ Profile_Rule>
   <Profile_Rule_B ua = "na"> </ Profile_Rule_B>
   <Profile_Rule_C ua = "na"> </ Profile_Rule_C>
   <Profile_Rule_D ua = "na"> </ Profile_Rule_D>
   <Upgrad_Enable ua = "na"> рд╣рд╛рдВ </ Upgrad_Enable>
   <Upgrad_Error_Retry_Delay ua = "na"> 3600 </ Upgrad_Error_Retry_Delay>
   <Log_Upgrad_Request_Msg ua = "na"> $ PN $ MAC - рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдиреНрдирдпрди $ SCHEME: // $ SERVIP: $ PORT $ PATH </ Log_Upgrad_Request_Msg>
   <Log_Upgrad_Success_Msg ua = "na"> $ PN $ MAC - рд╕рдлрд▓ рдЙрдиреНрдирдпрди $ SCHEME: // $ SERVIP: $ PORT $ PATH - $ ERR </ Log_Up__Success_Msg>
   <Log_Upgrad_Failure_Msg ua = "na"> $ PN $ MAC - рдирд╡реАрдиреАрдХрд░рдг рд╡рд┐рдлрд▓: $ ERR </ Log_Upgrad_Failure_Msg>
   <Call_Return_Code ua = "na"> </ Call_Return_Code>
   <Blind_Transfer_Code ua = "na"> </ Blind_Transfer_Code>
   <Call_Back_Act_Code ua = "na"> </ Call_Back_Act_Code>
   <Call_Back_Deact_Code ua = "na"> </ Call_Back_Deact_Code>
   <Cfwd_All_Act_Code ua = "na"> </ Cfwd_All_Act_Code>
   <Cfwd_All_Deact_Code ua = "na"> </ Cfwd_All_Deact_Code>
   <Cfwd_Busy_Act_Code ua = "na"> </ Cfwd_Busy_Act_Code>
   <Cfwd_Busy_Deact_Code ua = "na"> </ Cfwd_Busy_Deact_Code>
   <Cfwd_No_Ans_Act_Code ua = "na"> </ Cfwd_No_Ans_Act_Code>
   <Cfwd_No_Ans_Deact_Code ua = "na"> </ Cfwd_No_Ans_Deact_Code>
   <Cfwd_Last_Act_Code ua = "na"> </ Cfwd_Last_Act_Code>
   <Cfwd_Last_Deact_Code ua = "na"> </ Cfwd_Last_Deact_Code>
   <Block_Last_Act_Code ua = "na"> </ Block_Last_Act_Code>
   <Block_Last_Deact_Code ua = "na"> </ Block_Last_Deact_Code>
   <Accept_Last_Act_Code ua = "na"> </ Accept_Last_Act_Code>
   <Accept_Last_Deact_Code ua = "na"> </ Accept_Last_Deact_Code>
   <CW_Act_Code ua = "na"> </ CW_Act_Code>
   <CW_Deact_Code ua = "na"> </ CW_Deact_Code>
   <CW_Per_Call_Act_Code ua = "na"> </ CW_Per_Call_Act_Code>
   <CW_Per_Call_Deact_Code ua = "na"> </ CW_Per_Call_Deact_Code>
   <Block_CID_Act_Code ua = "na"> </ Block_CID_Act_Code>
   <Block_CID_Deact_Code ua = "na"> </ Block_CID_DeactctCode>
   <Block_CID_Per_Call_Act_Code ua = "na"> </ Block_CID_Per_Call_Act_Code>
   <Block_CID_Per_Call_Deact_Code ua = "na"> </ Block_CID_Per_Call_Deact_Code>
   <Block_ANC_Act_Code ua = "na"> </ Block_ANC_Act_Code>
   <Block_ANC_Deact_Code ua = "na"> </ Block_ANC_Deact_Code>
   <DND_Act_Code ua = "na"> </ DND_Act_Code>
   <DND_Deact_Code ua = "na"> </ DND_Deact_Code>
   <CID_Act_Code ua = "na"> </ CID_Act_Code>
   <CID_Deact_Code ua = "na"> </ CID_Deact_Code>
   <CWCID_Act_Code ua = "na"> </ CWCID_Act_Code>
   <CWCID_Deact_Code ua = "na"> </ CWCID_Deact_Code>
   <Dist_Ring_Act_Code ua = "na"> </ Dist_Ring_Act_Code>
   <Dist_Ring_Deact_Code ua = "na"> </ Dist_Ring_Deactct -Code>
   <Speed_Dial_Act_Code ua = "na"> </ Speed_Dial_Act_Code>
   <Secure_All_Call_Act_Code ua = "na"> </ Secure_All_Call_Act_Code>
   <Secure_No_Call_Act_Code ua = "na"> </ Secure_No_Call_Act_Code>
   <Secure_One_Call_Act_Code ua = "na"> </ Secure_One_Call_Act_Code>
   <Secure_One_Call_Deact_Code ua = "na"> </ Secure_One_Call_Deact_Code>
   <рдХреЙрдиреНрдлрд╝реНрд░реЗрдВрд╕_рдПрдХреНрдЯ_рдХреЛрдб рдпреВрдП = "рдирд╛"> </ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕_рдПрдХреНрдЯ_рдХреЛрдб>
   <Attn-Xfer_Act_Code ua = "na"> </ Attn-Xfer_Act_Code>
   <Modem_Line_Toggle_Code ua = "na"> </ Modem_Line_Toggle_Code>
   <Media_Loopback_Code ua = "na"> </ Media_Loopback_Code>
   <Time_Zone ua = "na"> GMT + 02: 00 </ Time_Zone>
   <Daylight_Saving_Time_Rule ua = "na"> start = 3 / -1 / 7/3; рдЕрдВрдд = 10 / -1 / 7/4; рд╕рд╣реЗрдЬреЗрдВ = 1 </ Daylight_Saving_Time_Rule>


рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / рдЖрдо / рдЕрдВрдд
  </ рдлреНрд▓реИрдЯ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓> 

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


All Articles