Browse Source

Куча изменений, описывать лень

master
Mikhail Grebenkin 7 years ago
parent
commit
2c2b2ca9b7
14 changed files with 432 additions and 324 deletions
  1. +227
    -214
      .idea/workspace.xml
  2. +15
    -12
      SetupMinersClass.py
  3. +0
    -0
      commands/sshs.json
  4. +0
    -0
      commands/telnets.json
  5. +0
    -3
      kea_host_wacher.py
  6. +34
    -7
      kea_hosts_generane.py
  7. +16
    -0
      tpl/a_add_hosts.tpl
  8. +40
    -0
      tpl/add_hosts.tpl
  9. +1
    -1
      tpl/hosts.tpl
  10. +0
    -26
      tpl/import_hosts.tpl
  11. +5
    -8
      tpl/main.tpl
  12. +15
    -0
      tpl/reboot_hosts.tpl
  13. +1
    -1
      tpl/remove_hosts.tpl
  14. +78
    -52
      web-leases.py

+ 227
- 214
.idea/workspace.xml View File

@ -2,14 +2,20 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="860870ba-65f3-49c8-9afa-136b118d341a" name="Default" comment="">
<change beforePath="" afterPath="$PROJECT_DIR$/SetupMinersClass.py" />
<change beforePath="" afterPath="$PROJECT_DIR$/sshs.json" />
<change beforePath="" afterPath="$PROJECT_DIR$/telnets.json" />
<change beforePath="" afterPath="$PROJECT_DIR$/tpl/a_add_hosts.tpl" />
<change beforePath="" afterPath="$PROJECT_DIR$/tpl/add_hosts.tpl" />
<change beforePath="" afterPath="$PROJECT_DIR$/tpl/reboot_hosts.tpl" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/config-sample.json" afterPath="$PROJECT_DIR$/config-sample.json" />
<change beforePath="$PROJECT_DIR$/SetupMinersClass.py" afterPath="$PROJECT_DIR$/SetupMinersClass.py" />
<change beforePath="$PROJECT_DIR$/kea_host_wacher.py" afterPath="$PROJECT_DIR$/kea_host_wacher.py" />
<change beforePath="$PROJECT_DIR$/kea_hosts_generane.py" afterPath="$PROJECT_DIR$/kea_hosts_generane.py" />
<change beforePath="$PROJECT_DIR$/venv/pip-selfcheck.json" afterPath="$PROJECT_DIR$/venv/pip-selfcheck.json" />
<change beforePath="$PROJECT_DIR$/venv1/pip-selfcheck.json" afterPath="$PROJECT_DIR$/venv1/pip-selfcheck.json" />
<change beforePath="$PROJECT_DIR$/sshs.json" afterPath="$PROJECT_DIR$/commands/sshs.json" />
<change beforePath="$PROJECT_DIR$/telnets.json" afterPath="$PROJECT_DIR$/commands/telnets.json" />
<change beforePath="$PROJECT_DIR$/tpl/hosts.tpl" afterPath="$PROJECT_DIR$/tpl/hosts.tpl" />
<change beforePath="$PROJECT_DIR$/tpl/import_hosts.tpl" afterPath="" />
<change beforePath="$PROJECT_DIR$/tpl/main.tpl" afterPath="$PROJECT_DIR$/tpl/main.tpl" />
<change beforePath="$PROJECT_DIR$/tpl/remove_hosts.tpl" afterPath="$PROJECT_DIR$/tpl/remove_hosts.tpl" />
<change beforePath="$PROJECT_DIR$/web-leases.py" afterPath="$PROJECT_DIR$/web-leases.py" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
@ -23,59 +29,59 @@
<file leaf-file-name="kea_hosts_generane.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kea_hosts_generane.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="666">
<caret line="143" column="13" lean-forward="false" selection-start-line="143" selection-start-column="13" selection-end-line="143" selection-end-column="13" />
<state relative-caret-position="558">
<caret line="77" column="23" lean-forward="false" selection-start-line="77" selection-start-column="23" selection-end-line="77" selection-end-column="23" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="sshs.json" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/sshs.json">
<file leaf-file-name="SetupMinersClass.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/SetupMinersClass.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="36">
<caret line="2" column="1" lean-forward="true" selection-start-line="2" selection-start-column="1" selection-end-line="2" selection-end-column="1" />
<folding />
<state relative-caret-position="0">
<caret line="0" column="6" lean-forward="false" selection-start-line="0" selection-start-column="6" selection-end-line="0" selection-end-column="6" />
<folding>
<element signature="e#36#52#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="telnets.json" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/telnets.json">
<file leaf-file-name="web-leases.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/web-leases.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="1" lean-forward="true" selection-start-line="0" selection-start-column="1" selection-end-line="0" selection-end-column="1" />
<folding />
<state relative-caret-position="378">
<caret line="21" column="34" lean-forward="true" selection-start-line="21" selection-start-column="34" selection-end-line="21" selection-end-column="34" />
<folding>
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SetupMinersClass.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/SetupMinersClass.py">
<file leaf-file-name="main.tpl" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/tpl/main.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="774">
<caret line="112" column="0" lean-forward="false" selection-start-line="112" selection-start-column="0" selection-end-line="117" selection-end-column="50" />
<folding>
<element signature="e#36#52#0" expanded="true" />
</folding>
<state relative-caret-position="108">
<caret line="6" column="80" lean-forward="false" selection-start-line="6" selection-start-column="80" selection-end-line="6" selection-end-column="80" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="kea_host_wacher.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kea_host_wacher.py">
<file leaf-file-name="reboot_hosts.tpl" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/tpl/reboot_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1170">
<caret line="98" column="0" lean-forward="false" selection-start-line="98" selection-start-column="0" selection-end-line="98" selection-end-column="0" />
<folding>
<element signature="e#36#50#0" expanded="true" />
</folding>
<state relative-caret-position="126">
<caret line="7" column="15" lean-forward="true" selection-start-line="7" selection-start-column="15" selection-end-line="7" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
@ -90,25 +96,22 @@
</provider>
</entry>
</file>
<file leaf-file-name="config-sample.json" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/config-sample.json">
<file leaf-file-name="a_add_hosts.tpl" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/tpl/a_add_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="8" column="13" lean-forward="false" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
<state relative-caret-position="234">
<caret line="13" column="19" lean-forward="false" selection-start-line="13" selection-start-column="19" selection-end-line="13" selection-end-column="19" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="web-leases.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/web-leases.py">
<file leaf-file-name="remove_hosts.tpl" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/tpl/remove_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="684">
<caret line="172" column="24" lean-forward="false" selection-start-line="172" selection-start-column="24" selection-end-line="172" selection-end-column="24" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
</folding>
<state relative-caret-position="144">
<caret line="8" column="10" lean-forward="false" selection-start-line="8" selection-start-column="10" selection-end-line="8" selection-end-column="10" />
<folding />
</state>
</provider>
</entry>
@ -116,18 +119,18 @@
<file leaf-file-name="hosts.tpl" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/tpl/hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="10" column="44" lean-forward="false" selection-start-line="10" selection-start-column="44" selection-end-line="10" selection-end-column="44" />
<state relative-caret-position="108">
<caret line="6" column="4" lean-forward="false" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="80" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="main.tpl" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/tpl/main.tpl">
<file leaf-file-name="add_hosts.tpl" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/tpl/add_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="14" column="17" lean-forward="false" selection-start-line="14" selection-start-column="17" selection-end-line="14" selection-end-column="17" />
<state relative-caret-position="126">
<caret line="7" column="48" lean-forward="false" selection-start-line="7" selection-start-column="48" selection-end-line="7" selection-end-column="48" />
<folding />
</state>
</provider>
@ -147,6 +150,8 @@
<find>read_t</find>
<find>print</find>
<find>send_data</find>
<find>setup</find>
<find>add_</find>
</findStrings>
</component>
<component name="Git.Settings">
@ -155,25 +160,29 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/kea_host_wacher.py" />
<option value="$PROJECT_DIR$/hosts.tpl" />
<option value="$PROJECT_DIR$/tpl/import_hosts.tpl" />
<option value="$PROJECT_DIR$/main.tpl" />
<option value="$PROJECT_DIR$/tpl/hosts.tpl" />
<option value="$PROJECT_DIR$/tpl/remove_hosts.tpl" />
<option value="$PROJECT_DIR$/web-leases.py" />
<option value="$PROJECT_DIR$/config.json" />
<option value="$PROJECT_DIR$/config-sample.json" />
<option value="$PROJECT_DIR$/send_telnet.py" />
<option value="$PROJECT_DIR$/SetupMinersClass.py" />
<option value="$PROJECT_DIR$/sshs.json" />
<option value="$PROJECT_DIR$/telnets.json" />
<option value="$PROJECT_DIR$/kea_host_wacher.py" />
<option value="$PROJECT_DIR$/kea_hosts_generane.py" />
<option value="$PROJECT_DIR$/SetupMinersClass.py" />
<option value="$PROJECT_DIR$/tpl/hosts.tpl" />
<option value="$PROJECT_DIR$/tpl/main.tpl" />
<option value="$PROJECT_DIR$/tpl/add_hosts.tpl" />
<option value="$PROJECT_DIR$/tpl/remove_hosts.tpl" />
<option value="$PROJECT_DIR$/tpl/import_hosts.tpl" />
<option value="$PROJECT_DIR$/tpl/reboot_hosts.tpl" />
<option value="$PROJECT_DIR$/tpl/a_add_hosts.tpl" />
<option value="$PROJECT_DIR$/web-leases.py" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="1775" />
<option name="x" value="1392" />
<option name="y" value="-4" />
<option name="width" value="1364" />
<option name="height" value="792" />
@ -204,6 +213,11 @@
<item name="kea_for_miners" type="b2602c69:ProjectViewProjectNode" />
<item name="kea_for_miners" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="kea_for_miners" type="b2602c69:ProjectViewProjectNode" />
<item name="kea_for_miners" type="462c0819:PsiDirectoryNode" />
<item name="commands" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="kea_for_miners" type="b2602c69:ProjectViewProjectNode" />
<item name="kea_for_miners" type="462c0819:PsiDirectoryNode" />
@ -221,13 +235,14 @@
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/tpl" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/tpl" />
<recent name="$PROJECT_DIR$" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/commands" />
<recent name="$PROJECT_DIR$/tpl" />
</key>
</component>
<component name="RunDashboard">
<option name="ruleStates">
@ -241,7 +256,7 @@
</list>
</option>
</component>
<component name="RunManager" selected="Python.kea_hosts_generane">
<component name="RunManager" selected="Python.web-leases">
<configuration name="kea_host_wacher" type="PythonConfigurationType" factoryName="Python" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
@ -322,9 +337,9 @@
</list>
<recent_temporary>
<list size="4">
<item index="0" class="java.lang.String" itemvalue="Python.kea_hosts_generane" />
<item index="1" class="java.lang.String" itemvalue="Python.web-leases" />
<item index="2" class="java.lang.String" itemvalue="Python.send_telnet" />
<item index="0" class="java.lang.String" itemvalue="Python.web-leases" />
<item index="1" class="java.lang.String" itemvalue="Python.send_telnet" />
<item index="2" class="java.lang.String" itemvalue="Python.kea_hosts_generane" />
<item index="3" class="java.lang.String" itemvalue="Python.kea_host_wacher" />
</list>
</recent_temporary>
@ -399,7 +414,14 @@
<option name="project" value="LOCAL" />
<updated>1514494342613</updated>
</task>
<option name="localTasksCounter" value="9" />
<task id="LOCAL-00009" summary="- сделан класс SetupMiners&#10;- добавлены файлы с командами&#10;- добавлен метод настройки хостов через телнет">
<created>1514671525222</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1514671525222</updated>
</task>
<option name="localTasksCounter" value="10" />
<servers />
</component>
<component name="ToolWindowManager">
@ -409,6 +431,7 @@
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.13958333" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32882884" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32924336" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.21063395" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
@ -421,7 +444,6 @@
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
</layout>
@ -438,7 +460,8 @@
<MESSAGE value="Переработаны скрипты с поддержкой конфига, кроме веб-морды" />
<MESSAGE value="Поправил wotcher так, чтобы не цеплял лизинг с нулевым третьим октетом" />
<MESSAGE value="- Добавлена поддержка конфига в web_leases&#10;- Добавлен функционал всяческий" />
<option name="LAST_COMMIT_MESSAGE" value="- Добавлена поддержка конфига в web_leases&#10;- Добавлен функционал всяческий" />
<MESSAGE value="- сделан класс SetupMiners&#10;- добавлены файлы с командами&#10;- добавлен метод настройки хостов через телнет" />
<option name="LAST_COMMIT_MESSAGE" value="- сделан класс SetupMiners&#10;- добавлены файлы с командами&#10;- добавлен метод настройки хостов через телнет" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
@ -447,22 +470,6 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/tpl/import_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="25" column="7" lean-forward="true" selection-start-line="25" selection-start-column="7" selection-end-line="25" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tpl/remove_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
<caret line="6" column="17" lean-forward="false" selection-start-line="6" selection-start-column="17" selection-end-line="6" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tpl/hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
@ -484,11 +491,11 @@
<state relative-caret-position="612">
<caret line="57" column="30" lean-forward="false" selection-start-line="57" selection-start-column="30" selection-end-line="57" selection-end-column="30" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -498,8 +505,7 @@
<state relative-caret-position="1728">
<caret line="97" column="39" lean-forward="false" selection-start-line="97" selection-start-column="39" selection-end-line="97" selection-end-column="39" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -533,7 +539,7 @@
<state relative-caret-position="522">
<caret line="33" column="50" lean-forward="true" selection-start-line="33" selection-start-column="50" selection-end-line="33" selection-end-column="50" />
<folding>
<element signature="e#36#50#0" expanded="true" />
<element signature="e#36#50#0" expanded="false" />
</folding>
</state>
</provider>
@ -543,11 +549,11 @@
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -557,8 +563,7 @@
<state relative-caret-position="1728">
<caret line="97" column="17" lean-forward="false" selection-start-line="97" selection-start-column="17" selection-end-line="97" selection-end-column="17" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -584,11 +589,11 @@
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -598,8 +603,7 @@
<state relative-caret-position="1728">
<caret line="97" column="17" lean-forward="false" selection-start-line="97" selection-start-column="17" selection-end-line="97" selection-end-column="17" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -625,11 +629,11 @@
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -639,8 +643,7 @@
<state relative-caret-position="1728">
<caret line="97" column="17" lean-forward="false" selection-start-line="97" selection-start-column="17" selection-end-line="97" selection-end-column="17" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -666,11 +669,11 @@
<state relative-caret-position="288">
<caret line="18" column="7" lean-forward="false" selection-start-line="18" selection-start-column="7" selection-end-line="18" selection-end-column="7" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -680,8 +683,7 @@
<state relative-caret-position="504">
<caret line="28" column="8" lean-forward="false" selection-start-line="28" selection-start-column="8" selection-end-line="28" selection-end-column="8" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -699,11 +701,11 @@
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -713,8 +715,7 @@
<state relative-caret-position="486">
<caret line="28" column="8" lean-forward="true" selection-start-line="28" selection-start-column="8" selection-end-line="28" selection-end-column="8" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -724,11 +725,11 @@
<state relative-caret-position="18">
<caret line="1" column="14" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="1" selection-end-column="14" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -746,8 +747,7 @@
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -757,11 +757,11 @@
<state relative-caret-position="18">
<caret line="1" column="14" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="1" selection-end-column="14" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -779,8 +779,7 @@
<state relative-caret-position="756">
<caret line="43" column="34" lean-forward="false" selection-start-line="43" selection-start-column="34" selection-end-line="43" selection-end-column="34" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -790,11 +789,11 @@
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -804,8 +803,7 @@
<state relative-caret-position="756">
<caret line="43" column="33" lean-forward="false" selection-start-line="43" selection-start-column="33" selection-end-line="43" selection-end-column="33" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
@ -815,11 +813,11 @@
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -829,11 +827,11 @@
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
@ -852,42 +850,82 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tpl/import_hosts.tpl">
<entry file="file://$PROJECT_DIR$/config-sample.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="25" column="7" lean-forward="false" selection-start-line="25" selection-start-column="7" selection-end-line="25" selection-end-column="7" />
<state relative-caret-position="144">
<caret line="8" column="13" lean-forward="false" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tpl/remove_hosts.tpl">
<entry file="file://$PROJECT_DIR$/commands/sshs.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
<caret line="6" column="17" lean-forward="false" selection-start-line="6" selection-start-column="17" selection-end-line="6" selection-end-column="17" />
<state relative-caret-position="54">
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/commands/telnets.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kea_host_wacher.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="486">
<caret line="88" column="93" lean-forward="false" selection-start-line="88" selection-start-column="93" selection-end-line="88" selection-end-column="93" />
<folding>
<element signature="e#36#50#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kea_hosts_generane.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="558">
<caret line="77" column="23" lean-forward="false" selection-start-line="77" selection-start-column="23" selection-end-line="77" selection-end-column="23" />
<folding>
<element signature="e#37#51#0" expanded="true" />
<element signature="e#112#252#0" expanded="false" />
<element signature="e#265#490#0" expanded="false" />
<element signature="e#504#598#0" expanded="false" />
<element signature="e#616#1417#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tpl/hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="10" column="44" lean-forward="false" selection-start-line="10" selection-start-column="44" selection-end-line="10" selection-end-column="44" />
<state relative-caret-position="108">
<caret line="6" column="4" lean-forward="false" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="80" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tpl/main.tpl">
<entry file="file://$PROJECT_DIR$/tpl/add_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="14" column="17" lean-forward="false" selection-start-line="14" selection-start-column="17" selection-end-line="14" selection-end-column="17" />
<state relative-caret-position="126">
<caret line="7" column="48" lean-forward="false" selection-start-line="7" selection-start-column="48" selection-end-line="7" selection-end-column="48" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config-sample.json">
<entry file="file://$PROJECT_DIR$/tpl/remove_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="8" column="13" lean-forward="false" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
<caret line="8" column="10" lean-forward="false" selection-start-line="8" selection-start-column="10" selection-end-line="8" selection-end-column="10" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tpl/a_add_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="234">
<caret line="13" column="19" lean-forward="false" selection-start-line="13" selection-start-column="19" selection-end-line="13" selection-end-column="19" />
<folding />
</state>
</provider>
@ -900,66 +938,41 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kea_host_wacher.py">
<entry file="file://$PROJECT_DIR$/tpl/reboot_hosts.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1170">
<caret line="98" column="0" lean-forward="false" selection-start-line="98" selection-start-column="0" selection-end-line="98" selection-end-column="0" />
<folding>
<element signature="e#36#50#0" expanded="true" />
</folding>
<state relative-caret-position="126">
<caret line="7" column="15" lean-forward="true" selection-start-line="7" selection-start-column="15" selection-end-line="7" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/web-leases.py">
<entry file="file://$PROJECT_DIR$/tpl/main.tpl">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="684">
<caret line="172" column="24" lean-forward="false" selection-start-line="172" selection-start-column="24" selection-end-line="172" selection-end-column="24" />
<folding>
<element signature="e#35#102#0" expanded="true" />
<element signature="e#3012#4258#0" expanded="false" />
</folding>
<state relative-caret-position="108">
<caret line="6" column="80" lean-forward="false" selection-start-line="6" selection-start-column="80" selection-end-line="6" selection-end-column="80" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kea_hosts_generane.py">
<entry file="file://$PROJECT_DIR$/web-leases.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="666">
<caret line="143" column="13" lean-forward="false" selection-start-line="143" selection-start-column="13" selection-end-line="143" selection-end-column="13" />
<state relative-caret-position="378">
<caret line="21" column="34" lean-forward="true" selection-start-line="21" selection-start-column="34" selection-end-line="21" selection-end-column="34" />
<folding>
<element signature="e#37#48#0" expanded="true" />
<element signature="e#140#280#0" expanded="false" />
<element signature="e#293#518#0" expanded="false" />
<element signature="e#532#626#0" expanded="false" />
<element signature="e#644#1445#0" expanded="false" />
<element signature="e#35#89#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/SetupMinersClass.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="774">
<caret line="112" column="0" lean-forward="false" selection-start-line="112" selection-start-column="0" selection-end-line="117" selection-end-column="50" />
<state relative-caret-position="0">
<caret line="0" column="6" lean-forward="false" selection-start-line="0" selection-start-column="6" selection-end-line="0" selection-end-column="6" />
<folding>
<element signature="e#36#52#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/sshs.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="36">
<caret line="2" column="1" lean-forward="true" selection-start-line="2" selection-start-column="1" selection-end-line="2" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/telnets.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="1" lean-forward="true" selection-start-line="0" selection-start-column="1" selection-end-line="0" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
</component>
</project>

+ 15
- 12
SetupMinersClass.py View File

@ -32,7 +32,7 @@ class SSHSetup:
def send(self, command):
self.ssh.send(command + '\n')
time.sleep(1)
print(self.ssh.recv(10000).decode())
self.ssh.recv(10000).decode()
def sendall(self, commlist=[]):
for command in commlist:
@ -61,15 +61,15 @@ class TelnetSetup:
self.close()
def login(self):
print(self.tn.read_until(b'login:'))
self.tn.read_until(b'login:')
self.tn.write(self.user.encode('utf8') + b'\n')
print(self.tn.read_until(b'Password:'))
self.tn.read_until(b'Password:')
self.tn.write(self.passwd.encode('utf8') + b'\n')
self.tn.read_until(self.user.encode('utf8'))
def send(self, command):
self.tn.write(command.encode('utf8') + b'\n')
print(self.tn.read_until(self.user.encode('utf8')).decode('utf8'))
self.tn.read_until(self.user.encode('utf8'))
def sendall(self, comlist=[]):
for command in comlist:
@ -84,22 +84,27 @@ class SetupMiner:
self.host = host
self.conf = conf
if len(telnets) == 0:
self.telnets = ["uname -a", "ps -A", "exit"]
self.telnets = ["exit"]
else:
self.telnets = telnets
if len(sshs) == 0:
self.sshs = ["uname -a", "ps -A", "exit"]
self.sshs = ["exit"]
else:
self.sshs = sshs
try:
TelnetSetup(self.host, self.conf['telnetport'], self.conf['telnetuser'], self.conf['telnetpass'],
self.telnets)
self.result = "telnet OK; "
except Exception as exc:
print(exc)
self.result = "{}; ".format(exc)
try:
SSHSetup(self.host, self.conf['sshport'], self.conf['sshuser'], conf['sshpass'], self.sshs)
self.result += '\n ssh OK'
except Exception as exc:
raise exc
self.result += '\n {}; '.format(exc)
def ret_result(self):
return self.result
def read_conf():
@ -117,10 +122,8 @@ def main():
"telnetpass": conf["telnetpass"],
"telnetport": conf["telnetport"]}
comlist = ["uname -a", "ps -A", "exit"]
try:
SetupMiner('10.100.0.48', minerconf)
except Exception as exc:
print(exc)
s = SetupMiner('10.100.4.10', minerconf)
print(s.result)
if __name__ == '__main__':


sshs.json → commands/sshs.json View File


telnets.json → commands/telnets.json View File


+ 0
- 3
kea_host_wacher.py View File

@ -81,15 +81,12 @@ def main():
seen_list.append(seen_h['id_1c_import'])
for online_host in online_hosts:
if online_host['1c_id'] in seen_list:
# print('need to update host 1c_id = %s' % online_host['1c_id'])
update_seen(qupdate_last_seen, online_host['1c_id'], *dbconf)
elif online_host not in seen:
# print('need to add host 1c_id = %s' % online_host['1c_id'])
update_seen(qinsert_last_seen, online_host['1c_id'], *dbconf)
seen = read_table(qselect_last_seen, *dbconf)
for seen_host in seen:
if seen_host['datetime'] < (datetime.datetime.now() - datetime.timedelta(minutes=1)):
# print('need to remove host 1c_id = %s' % seen_host['id_1c_import'])
update_hosts(qdelete_host, seen_host['id_1c_import'], *dbconf)
update_seen(qdelete_last_seen, seen_host['id_1c_import'], *dbconf)


+ 34
- 7
kea_hosts_generane.py View File

@ -2,8 +2,6 @@
# coding=utf-8
import time
import paramiko
import MySQLdb
import json
from SetupMinersClass import SetupMiner
@ -48,6 +46,38 @@ qinsert_hosts = "START TRANSACTION; " \
qupdate_1c = "update 1c_import set imported = 1 where serial = '%s';"
class ConfigClass:
def __init__(self):
self.conffile = 'config.json'
self.sshsfile = 'commands/sshs.json'
self.telnetsfile = 'commands/telnets.json'
self.config = list
self.minerconf = dict
self.dbconf = dict
self.sshs = list
self.telnets = list
def read_json(self, file):
with open(file) as f:
conf = json.load(f)
return conf
def readall(self):
conf = self.read_json(self.conffile)
self.sshs = self.read_json(self.sshsfile)
self.telnets = read_conf(self.telnetsfile)
self.minerconf = {"sshuser": conf["sshuser"],
"sshpass": conf["sshpass"],
"sshport": conf["sshport"],
"telnetuser": conf["telnetuser"],
"telnetpass": conf["telnetpass"],
"telnetport": conf["telnetport"]}
self.dbconf = {"dbhost": conf['dbhost'],
"dbuser": conf['dbuser'],
"dbpass": conf['dbpass'],
"dbbase": conf['dbbase']}
def read_table(sql, dbhost, dbuser, dbpass, dbbase):
try:
conn = MySQLdb.connect(host=dbhost, user=dbuser,
@ -124,11 +154,8 @@ def read_conf(file):
def main():
conf = read_conf('config.json')
sshs = read_conf('sshs.json')
telnets = read_conf('telnets.json')
print(sshs)
print(telnets)
telnets = read_conf('telnets.json')
sshs = read_conf('commands/sshs.json')
telnets = read_conf('commands/telnets.json')
minerconf = {"sshuser": conf["sshuser"],
"sshpass": conf["sshpass"],
"sshport": conf["sshport"],


+ 16
- 0
tpl/a_add_hosts.tpl View File

@ -0,0 +1,16 @@
<!DOCTYPE html>
<head>
<title>DHCP web-viewer</title>
</head>
<html>
<body>
<h1>Таблица импорта обновлена.</h1>
Если устройства не перезагружены автоматически, это необходимо сделать вручную.<br>
Лог действий:<br><br>
%for a in A:
{{a}}<br>
<br><br>
%end
<a href="/add_hosts">Назад</a>
</body>
</html>

+ 40
- 0
tpl/add_hosts.tpl View File

@ -0,0 +1,40 @@
<!DOCTYPE html>
<head>
<title>DHCP web-viewer</title>
</head>
<html>
<body>
<a href="/hosts">отчет по хостам в статическом адресном пространстве</a><br>
<a href="/">отчет по занятым хостам в динамическом адресном пространстве</a>
<h1>Добавление хостов</h1>
<br /><br />
<form action="/add_hosts" name="add_hosts" method="post">
<input type="submit" value="Submit">
<table border="1">
<caption>Таблица аренды динамических адресов</caption>
<tr>
<th>Дата истечения</th>
<th>IP адрес</th>
<th>Mac адрес</th>
<th>Имя хоста</th>
<th>Новое имя</th>
<th>№ сети</th>
<th>Импортировать</th>
</tr>
%i = 0
%for a in A:
%i = i + 1
<tr>
<td>{{a[0]}}</td>
<td>{{a[1]}}</td>
<td>{{a[2]}}</td>
<td>{{a[3]}}</td>
<td><input type="text" pattern="[A-Za-z0-9]{4,}" name="hostname_{{i}}" size="12"></td>
<td><input type="number" size="3" max="255" value="1" name="hostname_{{i}}"/></td>
<td><input type="checkbox" name="hostname_{{i}}" value="{{a[2]}}" /></td>
%end
</tr>
</table>
</form>
</body>
</html>

+ 1
- 1
tpl/hosts.tpl View File

@ -7,7 +7,7 @@
<a href="/">отчет по занятым хостам в динамическом адресном пространстве</a>
<h1>Статические адреса</h1>
<br /><br />
<form action="/hosts/" name="add_hosts" method="post">
<form action="/hosts" name="add_hosts" method="post">
<input type="submit" value="Submit">
<table border="1">
<caption>Таблица аренды статических адресов </caption>


+ 0
- 26
tpl/import_hosts.tpl View File

@ -1,26 +0,0 @@
<!DOCTYPE html>
<head>
<title>DHCP web-viewer</title>
</head>
<html>
<body>
<h1>Таблица импорта обновлена.</h1>
Если устройства не перезагружены автоматически, это необходимо сделать вручную.
<table border="1">
<caption>Добавленные хосты</caption>
<tr>
<th>IP адрес</th>
<th>Mac адрес</th>
<th>Имя хоста</th>
</tr>
%for a in A:
<tr>
<td>{{a[0]}}</td>
<td>{{a[1]}}</td>
<td>{{a[2]}}</td>
%end
</tr>
</table>
<a target="_blank" href="/">Назад</a>
</body>
</html>

+ 5
- 8
tpl/main.tpl View File

@ -4,10 +4,11 @@
</head>
<html>
<body>
<a href="/hosts/">отчет по хостам в статическом адресном пространстве</a>
<a href="/hosts">отчет по хостам в статическом адресном пространстве</a><br>
<a href="/add_hosts">Добавление хостов</a>
<h1>Динамические адреса</h1>
<br /><br />
<form action="/" name="add_hosts" method="post">
<form action="/" name="reboot_hosts" method="post">
<input type="submit" value="Submit">
<table border="1">
<caption>Таблица аренды динамических адресов</caption>
@ -16,9 +17,7 @@
<th>IP адрес</th>
<th>Mac адрес</th>
<th>Имя хоста</th>
<th>Новое имя</th>
<th>№ сети</th>
<th>Импортировать</th>
<th>Перезагрузить</th>
</tr>
%i = 0
%for a in A:
@ -28,9 +27,7 @@
<td>{{a[1]}}</td>
<td>{{a[2]}}</td>
<td>{{a[3]}}</td>
<td><input type="text" pattern="[A-Za-z0-9]{4,}" name="hostname_{{i}}" size="12"></td>
<td><input type="number" size="3" max="255" value="1" name="hostname_{{i}}"/></td>
<td><input type="checkbox" name="hostname_{{i}}" value="{{a[2]}}" /></td>
<td><input type="checkbox" name="reboot_{{i}}" value="{{a[1]}}" /></td>
%end
</tr>
</table>


+ 15
- 0
tpl/reboot_hosts.tpl View File

@ -0,0 +1,15 @@
<!DOCTYPE html>
<head>
<title>DHCP web-viewer</title>
</head>
<html>
<body>
<h1>Хосты перезагружены.</h1>
Если устройства не перезагружены автоматически, это необходимо сделать вручную.<br>
Лог операций:<br><br>
%for a in A:
{{a}}<br>
<br><br>
<a href="/add_hosts">Назад</a>
</body>
</html>

+ 1
- 1
tpl/remove_hosts.tpl View File

@ -6,6 +6,6 @@
<body>
<h1>Хосты удалены.</h1>
Если устройства в сети, их нужно перезагрузить вручную.
<a target="_blank" href="/hosts/">Назад</a>
<a href="/hosts">Назад</a>
</body>
</html>

+ 78
- 52
web-leases.py View File

@ -1,29 +1,17 @@
#!/usr/bin/python3
# coding=utf-8
from bottle import route, run, static_file, template, post, request
import json
from bottle import route, run, template, post, request
import MySQLdb
def read_conf():
with open('config.json') as f:
conf = json.load(f)
return conf
@route('/static/')
def server_static(filepath):
return static_file(filepath, root='/home/mix/PycharmProjects/kea_for_miners/static/')
from SetupMinersClass import SetupMiner
from kea_hosts_generane import ConfigClass
import kea_hosts_generane
@route('/')
def server_homepage():
conf = read_conf()
dbhost = conf['dbhost']
dbuser = conf['dbuser']
dbpass = conf['dbpass']
dbbase = conf['dbbase']
conf = ConfigClass()
conf.readall()
sql = "SELECT " \
" expire, " \
" INET_NTOA(address) as ip4, " \
@ -32,9 +20,10 @@ def server_homepage():
" FROM lease4 " \
"where INET_NTOA(address) like '%.%.0.%'" \
" ORDER BY expire DESC;"
print(conf.dbconf)
try:
conn = MySQLdb.connect(host=dbhost, user=dbuser,
passwd=dbpass, db=dbbase)
conn = MySQLdb.connect(host=conf.dbconf['dbhost'], user=conf.dbconf['dbuser'],
passwd=conf.dbconf['dbpass'], db=conf.dbconf['dbbase'])
except MySQLdb.Error as err:
print("Connection error: {}".format(err))
conn.close()
@ -53,12 +42,57 @@ def server_homepage():
@post('/')
def reboot_hosts():
conf = ConfigClass()
conf.readall()
i = 1
data = []
while request.POST.get("reboot_%s" % i, default=False):
hostname = request.POST.getall('reboot_%s' % i)
print(hostname)
sm = SetupMiner(hostname[0], conf.minerconf, telnets=['/sbin/reboot'], sshs=['/sbin/reboot'])
print(sm.result)
data.append("host {} log : {}".format(hostname, sm.result))
i += 1
return template('tpl/reboot_hosts.tpl', A=data)
@route('/add_hosts')
def server_add_hosts():
conf = ConfigClass()
conf.readall()
sql = "SELECT " \
" expire, " \
" INET_NTOA(address) as ip4, " \
" HEX(hwaddr)as hw_addr, " \
" hostname " \
" FROM lease4 " \
"where INET_NTOA(address) like '%.%.0.%'" \
" ORDER BY expire DESC;"
try:
conn = MySQLdb.connect(host=conf.dbconf['dbhost'], user=conf.dbconf['dbuser'],
passwd=conf.dbconf['dbpass'], db=conf.dbconf['dbbase'])
except MySQLdb.Error as err:
print("Connection error: {}".format(err))
conn.close()
try:
cur = conn.cursor(MySQLdb.cursors.DictCursor)
cur.execute(sql)
data = cur.fetchall()
except MySQLdb.Error as err:
print("Query error: {}".format(err))
conn.close()
data_list = []
for row in data:
temp = [row['expire'], row['ip4'], row['hw_addr'], row['hostname']]
data_list.append(temp)
return template('tpl/add_hosts.tpl', A=data_list)
@post('/add_hosts')
def adding_hosts():
conf = read_conf()
dbhost = conf['dbhost']
dbuser = conf['dbuser']
dbpass = conf['dbpass']
dbbase = conf['dbbase']
conf = ConfigClass()
conf.readall()
s_select = "SELECT " \
" expire, " \
" INET_NTOA(address) as ip4, " \
@ -75,34 +109,30 @@ def adding_hosts():
hostname = request.POST.getall('hostname_%s' % i)
print(request.POST.getall('hostname_%s' % i))
if len(hostname) == 3:
data.append(request.POST.getall('hostname_%s' % i))
try:
conn = MySQLdb.connect(host=dbhost, user=dbuser,
passwd=dbpass, db=dbbase)
conn = MySQLdb.connect(host=conf.dbconf['dbhost'], user=conf.dbconf['dbuser'],
passwd=conf.dbconf['dbpass'], db=conf.dbconf['dbbase'])
except MySQLdb.Error as err:
print("Connection error: {}".format(err))
data.append("connection error: {} <br>".format(err))
conn.close()
try:
cur = conn.cursor(MySQLdb.cursors.Cursor)
print(s_insert % tuple(hostname))
cur.execute(s_insert % tuple(hostname))
sql = s_insert % tuple(hostname)
cur.execute(sql)
conn.commit()
data.append("host {} proceed with request : {} <br>".format(hostname[0], sql))
except MySQLdb.Error as err:
print("Query error: {}".format(err))
data.append("host {} Query error: {} <br>".format(hostname[0], err))
conn.close()
i += 1
return template('tpl/import_hosts.tpl', A=data)
kea_hosts_generane.main()
return template('tpl/a_add_hosts.tpl', A=data)
@route('/hosts/')
@route('/hosts')
def server_hosts_repo():
conf = read_conf()
dbhost = conf['dbhost']
dbuser = conf['dbuser']
dbpass = conf['dbpass']
dbbase = conf['dbbase']
conf = ConfigClass()
conf.readall()
sql = "SELECT " \
"INET_NTOA(hosts.ipv4_address) AS ip4," \
" hosts.hostname," \
@ -116,8 +146,8 @@ def server_hosts_repo():
" dhcp_identifier = hwaddr " \
"ORDER BY ip4;"
try:
conn = MySQLdb.connect(host=dbhost, user=dbuser,
passwd=dbpass, db=dbbase)
conn = MySQLdb.connect(host=conf.dbconf['dbhost'], user=conf.dbconf['dbuser'],
passwd=conf.dbconf['dbpass'], db=conf.dbconf['dbbase'])
except MySQLdb.Error as err:
print("Connection error: {}".format(err))
conn.close()
@ -130,7 +160,7 @@ def server_hosts_repo():
conn.close()
data_list = []
for row in data:
temp = []
temp = list()
temp.append(row['ip4'])
temp.append(row['hostname'])
temp.append(row['hw_addr'])
@ -139,20 +169,16 @@ def server_hosts_repo():
return template('tpl/hosts.tpl', A=data_list)
@post('/hosts/')
@post('/hosts')
def remove_host():
conf = read_conf()
dbhost = conf['dbhost']
dbuser = conf['dbuser']
dbpass = conf['dbpass']
dbbase = conf['dbbase']
conf = ConfigClass()
s_remove1c = "delete from 1c_import where replace(hw_addr, ':', '') = '%s';"
s_removehost = "delete from hosts where dhcp_identifier = unhex('%s');"
hosts_del = request.forms.getall('remove_host')
del_1c = request.forms.getall('remove_import')
try:
conn = MySQLdb.connect(host=dbhost, user=dbuser,
passwd=dbpass, db=dbbase)
conn = MySQLdb.connect(host=conf.dbconf['dbhost'], user=conf.dbconf['dbuser'],
passwd=conf.dbconf['dbpass'], db=conf.dbconf['dbbase'])
except MySQLdb.Error as err:
print("Connection error: {}".format(err))
conn.close()


Loading…
Cancel
Save

Powered by TurnKey Linux.