@ -0,0 +1,14 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<module type="PYTHON_MODULE" version="4"> | |||||
<component name="NewModuleRootManager"> | |||||
<content url="file://$MODULE_DIR$"> | |||||
<excludeFolder url="file://$MODULE_DIR$/venv" /> | |||||
<excludeFolder url="file://$MODULE_DIR$/venv1" /> | |||||
</content> | |||||
<orderEntry type="jdk" jdkName="Python 3.5 (kea_for_miners) (1)" jdkType="Python SDK" /> | |||||
<orderEntry type="sourceFolder" forTests="false" /> | |||||
</component> | |||||
<component name="TestRunnerService"> | |||||
<option name="PROJECT_TEST_RUNNER" value="Unittests" /> | |||||
</component> | |||||
</module> |
@ -0,0 +1,4 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.5 (kea_for_miners) (1)" project-jdk-type="Python SDK" /> | |||||
</project> |
@ -0,0 +1,8 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="ProjectModuleManager"> | |||||
<modules> | |||||
<module fileurl="file://$PROJECT_DIR$/.idea/kea_for_miners.iml" filepath="$PROJECT_DIR$/.idea/kea_for_miners.iml" /> | |||||
</modules> | |||||
</component> | |||||
</project> |
@ -0,0 +1,335 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="ChangeListManager"> | |||||
<list default="true" id="860870ba-65f3-49c8-9afa-136b118d341a" name="Default" comment="" /> | |||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> | |||||
<option name="TRACKING_ENABLED" value="true" /> | |||||
<option name="SHOW_DIALOG" value="false" /> | |||||
<option name="HIGHLIGHT_CONFLICTS" value="true" /> | |||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | |||||
<option name="LAST_RESOLUTION" value="IGNORE" /> | |||||
</component> | |||||
<component name="FileEditorManager"> | |||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> | |||||
<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="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#81#92#0" expanded="true" /> | |||||
<element signature="e#259#405#0" expanded="false" /> | |||||
<element signature="e#418#642#0" expanded="false" /> | |||||
<element signature="e#656#750#0" expanded="false" /> | |||||
</folding> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
</file> | |||||
<file leaf-file-name="web-leases.py" pinned="false" current-in-tab="true"> | |||||
<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="0" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> | |||||
<folding> | |||||
<element signature="e#0#52#0" expanded="true" /> | |||||
</folding> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
</file> | |||||
<file leaf-file-name="main.tpl" pinned="false" current-in-tab="false"> | |||||
<entry file="file://$PROJECT_DIR$/main.tpl"> | |||||
<provider selected="true" editor-type-id="text-editor"> | |||||
<state relative-caret-position="144"> | |||||
<caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" /> | |||||
<folding /> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
</file> | |||||
</leaf> | |||||
</component> | |||||
<component name="FindInProjectRecents"> | |||||
<findStrings> | |||||
<find>print</find> | |||||
</findStrings> | |||||
</component> | |||||
<component name="IdeDocumentHistory"> | |||||
<option name="CHANGED_PATHS"> | |||||
<list> | |||||
<option value="$PROJECT_DIR$/kea_hosts_generane.py" /> | |||||
<option value="$PROJECT_DIR$/main.tpl" /> | |||||
<option value="$PROJECT_DIR$/web-leases.py" /> | |||||
</list> | |||||
</option> | |||||
</component> | |||||
<component name="ProjectFrameBounds" extendedState="6"> | |||||
<option name="x" value="62" /> | |||||
<option name="width" value="1699" /> | |||||
<option name="height" value="1080" /> | |||||
</component> | |||||
<component name="ProjectView"> | |||||
<navigator currentView="ProjectPane" proportions="" version="1"> | |||||
<flattenPackages /> | |||||
<showMembers /> | |||||
<showModules /> | |||||
<showLibraryContents /> | |||||
<hideEmptyPackages /> | |||||
<abbreviatePackageNames /> | |||||
<autoscrollToSource /> | |||||
<autoscrollFromSource /> | |||||
<sortByType /> | |||||
<manualOrder /> | |||||
<foldersAlwaysOnTop value="true" /> | |||||
</navigator> | |||||
<panes> | |||||
<pane id="ProjectPane"> | |||||
<subPane> | |||||
<expand> | |||||
<path> | |||||
<item name="kea_for_miners" type="b2602c69:ProjectViewProjectNode" /> | |||||
<item name="kea_for_miners" type="462c0819:PsiDirectoryNode" /> | |||||
</path> | |||||
</expand> | |||||
<select /> | |||||
</subPane> | |||||
</pane> | |||||
<pane id="Scratches" /> | |||||
<pane id="Scope" /> | |||||
</panes> | |||||
</component> | |||||
<component name="PropertiesComponent"> | |||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" /> | |||||
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" /> | |||||
</component> | |||||
<component name="RunDashboard"> | |||||
<option name="ruleStates"> | |||||
<list> | |||||
<RuleState> | |||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" /> | |||||
</RuleState> | |||||
<RuleState> | |||||
<option name="name" value="StatusDashboardGroupingRule" /> | |||||
</RuleState> | |||||
</list> | |||||
</option> | |||||
</component> | |||||
<component name="RunManager" selected="Python.web-leases"> | |||||
<configuration name="kea_hosts_generane" type="PythonConfigurationType" factoryName="Python" temporary="true"> | |||||
<option name="INTERPRETER_OPTIONS" value="" /> | |||||
<option name="PARENT_ENVS" value="true" /> | |||||
<envs> | |||||
<env name="PYTHONUNBUFFERED" value="1" /> | |||||
</envs> | |||||
<option name="SDK_HOME" value="" /> | |||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> | |||||
<option name="IS_MODULE_SDK" value="true" /> | |||||
<option name="ADD_CONTENT_ROOTS" value="true" /> | |||||
<option name="ADD_SOURCE_ROOTS" value="true" /> | |||||
<module name="kea_for_miners" /> | |||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/kea_hosts_generane.py" /> | |||||
<option name="PARAMETERS" value="" /> | |||||
<option name="SHOW_COMMAND_LINE" value="false" /> | |||||
<option name="EMULATE_TERMINAL" value="false" /> | |||||
<option name="MODULE_MODE" value="false" /> | |||||
</configuration> | |||||
<configuration name="web-leases" type="PythonConfigurationType" factoryName="Python" temporary="true"> | |||||
<option name="INTERPRETER_OPTIONS" value="" /> | |||||
<option name="PARENT_ENVS" value="true" /> | |||||
<envs> | |||||
<env name="PYTHONUNBUFFERED" value="1" /> | |||||
</envs> | |||||
<option name="SDK_HOME" value="" /> | |||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> | |||||
<option name="IS_MODULE_SDK" value="true" /> | |||||
<option name="ADD_CONTENT_ROOTS" value="true" /> | |||||
<option name="ADD_SOURCE_ROOTS" value="true" /> | |||||
<module name="kea_for_miners" /> | |||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/web-leases.py" /> | |||||
<option name="PARAMETERS" value="" /> | |||||
<option name="SHOW_COMMAND_LINE" value="false" /> | |||||
<option name="EMULATE_TERMINAL" value="false" /> | |||||
<option name="MODULE_MODE" value="false" /> | |||||
</configuration> | |||||
<list size="2"> | |||||
<item index="0" class="java.lang.String" itemvalue="Python.kea_hosts_generane" /> | |||||
<item index="1" class="java.lang.String" itemvalue="Python.web-leases" /> | |||||
</list> | |||||
<recent_temporary> | |||||
<list size="2"> | |||||
<item index="0" class="java.lang.String" itemvalue="Python.web-leases" /> | |||||
<item index="1" class="java.lang.String" itemvalue="Python.kea_hosts_generane" /> | |||||
</list> | |||||
</recent_temporary> | |||||
</component> | |||||
<component name="ShelveChangesManager" show_recycled="false"> | |||||
<option name="remove_strategy" value="false" /> | |||||
</component> | |||||
<component name="SvnConfiguration"> | |||||
<configuration /> | |||||
</component> | |||||
<component name="TaskManager"> | |||||
<task active="true" id="Default" summary="Default task"> | |||||
<changelist id="860870ba-65f3-49c8-9afa-136b118d341a" name="Default" comment="" /> | |||||
<created>1512923489622</created> | |||||
<option name="number" value="Default" /> | |||||
<option name="presentableId" value="Default" /> | |||||
<updated>1512923489622</updated> | |||||
</task> | |||||
<servers /> | |||||
</component> | |||||
<component name="ToolWindowManager"> | |||||
<frame x="62" y="0" width="1368" height="780" extended-state="6" /> | |||||
<editor active="true" /> | |||||
<layout> | |||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2489019" 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.33" sideWeight="0.5" order="7" side_tool="true" 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="false" 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="false" show_stripe_button="true" weight="0.21856287" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Structure" active="false" anchor="left" 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="Terminal" 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="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> | |||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3997006" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Message" 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="0" side_tool="false" content_ui="tabs" /> | |||||
<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> | |||||
</component> | |||||
<component name="VcsContentAnnotationSettings"> | |||||
<option name="myLimit" value="2678400000" /> | |||||
</component> | |||||
<component name="XDebuggerManager"> | |||||
<breakpoint-manager> | |||||
<option name="time" value="1" /> | |||||
</breakpoint-manager> | |||||
<watches-manager /> | |||||
</component> | |||||
<component name="editorHistoryManager"> | |||||
<entry file="file://$PROJECT_DIR$/kea_hosts_generane.py"> | |||||
<provider selected="true" editor-type-id="text-editor"> | |||||
<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#81#92#0" expanded="true" /> | |||||
<element signature="e#259#405#0" expanded="false" /> | |||||
<element signature="e#418#642#0" expanded="false" /> | |||||
<element signature="e#656#750#0" expanded="false" /> | |||||
</folding> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
<entry file="file://$PROJECT_DIR$/main.tpl"> | |||||
<provider selected="true" editor-type-id="text-editor"> | |||||
<state relative-caret-position="144"> | |||||
<caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" /> | |||||
<folding /> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
<entry file="file://$PROJECT_DIR$/web-leases.py"> | |||||
<provider selected="true" editor-type-id="text-editor"> | |||||
<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#0#52#0" expanded="true" /> | |||||
</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="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#81#92#0" expanded="true" /> | |||||
<element signature="e#259#405#0" expanded="false" /> | |||||
<element signature="e#418#642#0" expanded="false" /> | |||||
<element signature="e#656#750#0" expanded="false" /> | |||||
</folding> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
<entry file="file://$PROJECT_DIR$/web-leases.py"> | |||||
<provider selected="true" editor-type-id="text-editor"> | |||||
<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#0#52#0" expanded="true" /> | |||||
</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="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#81#92#0" expanded="true" /> | |||||
<element signature="e#259#405#0" expanded="false" /> | |||||
<element signature="e#418#642#0" expanded="false" /> | |||||
<element signature="e#656#750#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="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#81#92#0" expanded="true" /> | |||||
<element signature="e#259#405#0" expanded="false" /> | |||||
<element signature="e#418#642#0" expanded="false" /> | |||||
<element signature="e#656#750#0" expanded="false" /> | |||||
</folding> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
<entry file="file:///usr/lib/python3.5/socketserver.py"> | |||||
<provider selected="true" editor-type-id="text-editor"> | |||||
<state relative-caret-position="214"> | |||||
<caret line="458" column="0" lean-forward="true" selection-start-line="458" selection-start-column="0" selection-end-line="458" selection-end-column="0" /> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
<entry file="file://$PROJECT_DIR$/main.tpl"> | |||||
<provider selected="true" editor-type-id="text-editor"> | |||||
<state relative-caret-position="144"> | |||||
<caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" /> | |||||
<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="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#81#92#0" expanded="true" /> | |||||
<element signature="e#259#405#0" expanded="false" /> | |||||
<element signature="e#418#642#0" expanded="false" /> | |||||
<element signature="e#656#750#0" expanded="false" /> | |||||
</folding> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
<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="0" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> | |||||
<folding> | |||||
<element signature="e#0#52#0" expanded="true" /> | |||||
</folding> | |||||
</state> | |||||
</provider> | |||||
</entry> | |||||
</component> | |||||
</project> |
@ -0,0 +1,190 @@ | |||||
#!/usr/bin/python3 | |||||
# coding=utf-8 | |||||
# import os | |||||
# import subprocess | |||||
# import sys | |||||
import time | |||||
import paramiko | |||||
import MySQLdb | |||||
sshuser = 'root' | |||||
sshpass = 'admin' | |||||
dbhost = '10.5.1.248' | |||||
dbuser = 'kea' | |||||
dbpass = 'kea1234' | |||||
dbbase = 'dhcp4' | |||||
ippool = [10, 210] | |||||
q1c = "SELECT REPLACE(hw_addr, ':','') as hw_addr, " \ | |||||
"serial, " \ | |||||
"net_num " \ | |||||
"FROM dhcp4.1c_import " \ | |||||
"where imported = 0;" | |||||
qleases4 = "SELECT INET_NTOA(address) as ip4, " \ | |||||
"HEX(hwaddr)as hw_addr, hostname, " \ | |||||
"expire, " \ | |||||
"valid_lifetime " \ | |||||
"FROM lease4 " \ | |||||
"where INET_NTOA(address) like '10.6.0%';" | |||||
qhosts_ip = "SELECT " \ | |||||
"INET_NTOA(ipv4_address) AS ipv4_address " \ | |||||
"FROM dhcp4.hosts;" | |||||
qinsert_hosts = "START TRANSACTION; " \ | |||||
"SET @ipv4_reservation='%s'; " \ | |||||
"SET @hostname = '%s'; " \ | |||||
"SET @identifier_type='hw-address'; " \ | |||||
"SET @identifier_value='%s'; " \ | |||||
"SET @dhcp4_subnet_id=1024; " \ | |||||
"INSERT INTO hosts ( dhcp_identifier, " \ | |||||
" dhcp_identifier_type, " \ | |||||
" dhcp4_subnet_id, " \ | |||||
" ipv4_address, " \ | |||||
" hostname) " \ | |||||
"VALUES ( " \ | |||||
"UNHEX(@identifier_value)," \ | |||||
" (SELECT type FROM host_identifier_type WHERE name=@identifier_type)," \ | |||||
" @dhcp4_subnet_id," \ | |||||
" INET_ATON(@ipv4_reservation)," \ | |||||
" @hostname); " \ | |||||
"COMMIT;" | |||||
qupdate_1c = "update 1c_import set imported = 1 where serial = '%s';" | |||||
def send_data(user, password, name, host): | |||||
errorcode = '' | |||||
work = True | |||||
commands = [] | |||||
# commands.append("hostname %s" % name) | |||||
# commands.append("echo '%s' > /etc/hostname" % name) | |||||
# commands.append("echo 'hostname=%s' > /etc/network.conf.factory" % name) | |||||
# commands.append("echo 'dhcp=true' >> /etc/network.conf.factory") | |||||
# commands.append("echo 'hostname=%s' > /config/network.conf" % name) | |||||
# commands.append("echo 'dhcp=true' >> /config/network.conf") | |||||
# commands.append("sync") | |||||
commands.append("reboot") | |||||
print(commands) | |||||
client = paramiko.SSHClient() | |||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # если нет хоста - добавляем | |||||
try: | |||||
client.connect(hostname=host, username=user, password=password, look_for_keys=False, | |||||
allow_agent=False) # пытаемся подключиться, look_for_keys=False, allow_agent=False - зачем-то | |||||
# нужны циске. | |||||
except Exception as exept: # в случае исключения - | |||||
errorcode = exept # возвращаем код и описание исключения | |||||
else: # усли все в порядке | |||||
conn = client.invoke_shell() # врубаем интерактивный шелл - с цисками только так. | |||||
time.sleep(1) # задержка | |||||
conn.recv(1000) # хаваем все, что выплюнула, дабы не отсвечивало (ограничиваю 1000 строк) | |||||
conn.send("head -n 1 /config/network.conf\n") | |||||
time.sleep(1) | |||||
h = conn.recv(100) | |||||
if "hostname=" + name in h: | |||||
work = False | |||||
work = True # ЗАГЛУШКА!!! В данном случае условия не проверяются. | |||||
if work: | |||||
print(name, host, "will reboot") | |||||
for command in commands: # Читаем и исполняем команды | |||||
conn.send(command + '\n') # засылаем команду | |||||
time.sleep(0.1) # ждем указанный таймаут | |||||
conn.recv(99999999999) # хаваем его в никуда | |||||
else: | |||||
print("nothing to do") | |||||
finally: # по окончании всех процедур | |||||
client.close() # закрываем коннектий | |||||
return errorcode # Вертаем все, что наковыряли | |||||
def read_table(sql): | |||||
try: | |||||
conn = MySQLdb.connect(host=dbhost, user=dbuser, | |||||
passwd=dbpass, db=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() | |||||
return data | |||||
def first_free_ip(ips, ip_pool, net_num): | |||||
locked_ip = [] | |||||
octet1 = '' | |||||
octet2 = '' | |||||
octet3 = net_num | |||||
octet4 = '' | |||||
set_octets = False | |||||
for ip in ips: | |||||
octets = ip['ipv4_address'].split('.') | |||||
if not set_octets: | |||||
octet1 = octets[0] | |||||
octet2 = octets[1] | |||||
set_octets = True | |||||
if octets[2] == str(net_num): | |||||
locked_ip.append(octets[3]) | |||||
i = ip_pool[0] | |||||
while i < ip_pool[1]: | |||||
if not str(i) in locked_ip: | |||||
octet4 = str(i) | |||||
break | |||||
i = i + 1 | |||||
if octet4 == '': | |||||
return '' | |||||
else: | |||||
return "%s.%s.%s.%s" % (octet1, octet2, octet3, octet4) | |||||
def make_hosts(sql, ip, hostname, hw_addr): | |||||
try: | |||||
conn = MySQLdb.connect(host=dbhost, user=dbuser, | |||||
passwd=dbpass, db=dbbase) | |||||
except MySQLdb.Error as err: | |||||
print("Connection error: {}".format(err)) | |||||
conn.close() | |||||
try: | |||||
cur = conn.cursor(MySQLdb.cursors.DictCursor) | |||||
cur.execute(sql % (ip, hostname, hw_addr)) | |||||
data = cur.fetchall() | |||||
cur.close() | |||||
except MySQLdb.Error as err: | |||||
print("Query error: {}".format(err)) | |||||
try: | |||||
cur = conn.cursor(MySQLdb.cursors.DictCursor) | |||||
print(qupdate_1c % hostname) | |||||
cur.execute(qupdate_1c % hostname) | |||||
data = cur.fetchall() | |||||
cur.close() | |||||
except MySQLdb.Error as err: | |||||
print("Query error: {}".format(err)) | |||||
conn.commit() | |||||
conn.close() | |||||
return data | |||||
def main(): | |||||
data_1c = read_table(q1c) | |||||
data_leases = read_table(qleases4) | |||||
for line in data_1c: | |||||
set_ip = first_free_ip(read_table(qhosts_ip), ippool, line['net_num']) | |||||
set_hw_addr = line['hw_addr'] | |||||
set_host = line['serial'] | |||||
make_hosts(qinsert_hosts, set_ip, set_host, set_hw_addr) | |||||
print('host built name %s, mac %s, ip %s' % (set_host, set_hw_addr, set_ip)) | |||||
for line in data_1c: | |||||
for lease in data_leases: | |||||
if line['hw_addr'] == lease['hw_addr']: | |||||
send_data(sshuser, sshpass, line['serial'], lease['ip4']) | |||||
if __name__ == '__main__': | |||||
main() |
@ -0,0 +1,25 @@ | |||||
<!DOCTYPE html> | |||||
<html lang="en"> | |||||
<head> | |||||
<title>My Bottle Home</title> | |||||
<link rel="stylesheet" type="text/css" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css"> | |||||
</head> | |||||
<body> | |||||
<h1>Initial page</h1> | |||||
<br /><br /> | |||||
<table border="1"> | |||||
<caption>Таблица аренды адресов</caption> | |||||
<tr> | |||||
<th>Дата истечения</th> | |||||
<th>IP адрес</th> | |||||
<th>Mac адрес</th> | |||||
<th>Имя хоста</th> | |||||
</tr> | |||||
%for a in A: | |||||
<tr> | |||||
%for i in a: | |||||
<td>{{i}}</td> | |||||
%end | |||||
%end | |||||
</body> | |||||
</html> |
@ -0,0 +1,78 @@ | |||||
# This file must be used with "source bin/activate" *from bash* | |||||
# you cannot run it directly | |||||
deactivate () { | |||||
unset -f pydoc >/dev/null 2>&1 | |||||
# reset old environment variables | |||||
# ! [ -z ${VAR+_} ] returns true if VAR is declared at all | |||||
if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then | |||||
PATH="$_OLD_VIRTUAL_PATH" | |||||
export PATH | |||||
unset _OLD_VIRTUAL_PATH | |||||
fi | |||||
if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then | |||||
PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" | |||||
export PYTHONHOME | |||||
unset _OLD_VIRTUAL_PYTHONHOME | |||||
fi | |||||
# This should detect bash and zsh, which have a hash command that must | |||||
# be called to get it to forget past commands. Without forgetting | |||||
# past commands the $PATH changes we made may not be respected | |||||
if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then | |||||
hash -r 2>/dev/null | |||||
fi | |||||
if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then | |||||
PS1="$_OLD_VIRTUAL_PS1" | |||||
export PS1 | |||||
unset _OLD_VIRTUAL_PS1 | |||||
fi | |||||
unset VIRTUAL_ENV | |||||
if [ ! "${1-}" = "nondestructive" ] ; then | |||||
# Self destruct! | |||||
unset -f deactivate | |||||
fi | |||||
} | |||||
# unset irrelevant variables | |||||
deactivate nondestructive | |||||
VIRTUAL_ENV="/home/mix/PycharmProjects/kea_for_miners/venv" | |||||
export VIRTUAL_ENV | |||||
_OLD_VIRTUAL_PATH="$PATH" | |||||
PATH="$VIRTUAL_ENV/bin:$PATH" | |||||
export PATH | |||||
# unset PYTHONHOME if set | |||||
if ! [ -z "${PYTHONHOME+_}" ] ; then | |||||
_OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" | |||||
unset PYTHONHOME | |||||
fi | |||||
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then | |||||
_OLD_VIRTUAL_PS1="$PS1" | |||||
if [ "x" != x ] ; then | |||||
PS1="$PS1" | |||||
else | |||||
PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1" | |||||
fi | |||||
export PS1 | |||||
fi | |||||
# Make sure to unalias pydoc if it's already there | |||||
alias pydoc 2>/dev/null >/dev/null && unalias pydoc | |||||
pydoc () { | |||||
python -m pydoc "$@" | |||||
} | |||||
# This should detect bash and zsh, which have a hash command that must | |||||
# be called to get it to forget past commands. Without forgetting | |||||
# past commands the $PATH changes we made may not be respected | |||||
if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then | |||||
hash -r 2>/dev/null | |||||
fi |
@ -0,0 +1,36 @@ | |||||
# This file must be used with "source bin/activate.csh" *from csh*. | |||||
# You cannot run it directly. | |||||
# Created by Davide Di Blasi <davidedb@gmail.com>. | |||||
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc' | |||||
# Unset irrelevant variables. | |||||
deactivate nondestructive | |||||
setenv VIRTUAL_ENV "/home/mix/PycharmProjects/kea_for_miners/venv" | |||||
set _OLD_VIRTUAL_PATH="$PATH" | |||||
setenv PATH "$VIRTUAL_ENV/bin:$PATH" | |||||
if ("" != "") then | |||||
set env_name = "" | |||||
else | |||||
set env_name = `basename "$VIRTUAL_ENV"` | |||||
endif | |||||
# Could be in a non-interactive environment, | |||||
# in which case, $prompt is undefined and we wouldn't | |||||
# care about the prompt anyway. | |||||
if ( $?prompt ) then | |||||
set _OLD_VIRTUAL_PROMPT="$prompt" | |||||
set prompt = "[$env_name] $prompt" | |||||
endif | |||||
unset env_name | |||||
alias pydoc python -m pydoc | |||||
rehash | |||||
@ -0,0 +1,76 @@ | |||||
# This file must be used using `. bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. | |||||
# Do not run it directly. | |||||
function deactivate -d 'Exit virtualenv mode and return to the normal environment.' | |||||
# reset old environment variables | |||||
if test -n "$_OLD_VIRTUAL_PATH" | |||||
set -gx PATH $_OLD_VIRTUAL_PATH | |||||
set -e _OLD_VIRTUAL_PATH | |||||
end | |||||
if test -n "$_OLD_VIRTUAL_PYTHONHOME" | |||||
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME | |||||
set -e _OLD_VIRTUAL_PYTHONHOME | |||||
end | |||||
if test -n "$_OLD_FISH_PROMPT_OVERRIDE" | |||||
# Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. | |||||
set -l fish_function_path | |||||
# Erase virtualenv's `fish_prompt` and restore the original. | |||||
functions -e fish_prompt | |||||
functions -c _old_fish_prompt fish_prompt | |||||
functions -e _old_fish_prompt | |||||
set -e _OLD_FISH_PROMPT_OVERRIDE | |||||
end | |||||
set -e VIRTUAL_ENV | |||||
if test "$argv[1]" != 'nondestructive' | |||||
# Self-destruct! | |||||
functions -e pydoc | |||||
functions -e deactivate | |||||
end | |||||
end | |||||
# Unset irrelevant variables. | |||||
deactivate nondestructive | |||||
set -gx VIRTUAL_ENV "/home/mix/PycharmProjects/kea_for_miners/venv" | |||||
set -gx _OLD_VIRTUAL_PATH $PATH | |||||
set -gx PATH "$VIRTUAL_ENV/bin" $PATH | |||||
# Unset `$PYTHONHOME` if set. | |||||
if set -q PYTHONHOME | |||||
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME | |||||
set -e PYTHONHOME | |||||
end | |||||
function pydoc | |||||
python -m pydoc $argv | |||||
end | |||||
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" | |||||
# Copy the current `fish_prompt` function as `_old_fish_prompt`. | |||||
functions -c fish_prompt _old_fish_prompt | |||||
function fish_prompt | |||||
# Save the current $status, for fish_prompts that display it. | |||||
set -l old_status $status | |||||
# Prompt override provided? | |||||
# If not, just prepend the environment name. | |||||
if test -n "" | |||||
printf '%s%s' "" (set_color normal) | |||||
else | |||||
printf '%s(%s) ' (set_color normal) (basename "$VIRTUAL_ENV") | |||||
end | |||||
# Restore the original $status | |||||
echo "exit $old_status" | source | |||||
_old_fish_prompt | |||||
end | |||||
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" | |||||
end |
@ -0,0 +1,34 @@ | |||||
"""By using execfile(this_file, dict(__file__=this_file)) you will | |||||
activate this virtualenv environment. | |||||
This can be used when you must use an existing Python interpreter, not | |||||
the virtualenv bin/python | |||||
""" | |||||
try: | |||||
__file__ | |||||
except NameError: | |||||
raise AssertionError( | |||||
"You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))") | |||||
import sys | |||||
import os | |||||
old_os_path = os.environ.get('PATH', '') | |||||
os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path | |||||
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |||||
if sys.platform == 'win32': | |||||
site_packages = os.path.join(base, 'Lib', 'site-packages') | |||||
else: | |||||
site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages') | |||||
prev_sys_path = list(sys.path) | |||||
import site | |||||
site.addsitedir(site_packages) | |||||
sys.real_prefix = sys.prefix | |||||
sys.prefix = base | |||||
# Move the added items to the front of the path: | |||||
new_sys_path = [] | |||||
for item in list(sys.path): | |||||
if item not in prev_sys_path: | |||||
new_sys_path.append(item) | |||||
sys.path.remove(item) | |||||
sys.path[:0] = new_sys_path |
@ -0,0 +1,11 @@ | |||||
#!/home/mix/PycharmProjects/kea_for_miners/venv/bin/python3.5 | |||||
# -*- coding: utf-8 -*- | |||||
import re | |||||
import sys | |||||
from setuptools.command.easy_install import main | |||||
if __name__ == '__main__': | |||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
sys.exit(main()) |
@ -0,0 +1,11 @@ | |||||
#!/home/mix/PycharmProjects/kea_for_miners/venv/bin/python3.5 | |||||
# -*- coding: utf-8 -*- | |||||
import re | |||||
import sys | |||||
from setuptools.command.easy_install import main | |||||
if __name__ == '__main__': | |||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
sys.exit(main()) |
@ -0,0 +1,11 @@ | |||||
#!/home/mix/PycharmProjects/kea_for_miners/venv/bin/python3.5 | |||||
# -*- coding: utf-8 -*- | |||||
import re | |||||
import sys | |||||
from pip import main | |||||
if __name__ == '__main__': | |||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
sys.exit(main()) |
@ -0,0 +1,11 @@ | |||||
#!/home/mix/PycharmProjects/kea_for_miners/venv/bin/python3.5 | |||||
# -*- coding: utf-8 -*- | |||||
import re | |||||
import sys | |||||
from pip import main | |||||
if __name__ == '__main__': | |||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
sys.exit(main()) |
@ -0,0 +1,11 @@ | |||||
#!/home/mix/PycharmProjects/kea_for_miners/venv/bin/python3.5 | |||||
# -*- coding: utf-8 -*- | |||||
import re | |||||
import sys | |||||
from pip import main | |||||
if __name__ == '__main__': | |||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
sys.exit(main()) |
@ -0,0 +1 @@ | |||||
python3.5 |
@ -0,0 +1,78 @@ | |||||
#!/home/mix/PycharmProjects/kea_for_miners/venv/bin/python | |||||
import sys | |||||
import getopt | |||||
import sysconfig | |||||
valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', | |||||
'ldflags', 'help'] | |||||
if sys.version_info >= (3, 2): | |||||
valid_opts.insert(-1, 'extension-suffix') | |||||
valid_opts.append('abiflags') | |||||
if sys.version_info >= (3, 3): | |||||
valid_opts.append('configdir') | |||||
def exit_with_usage(code=1): | |||||
sys.stderr.write("Usage: {0} [{1}]\n".format( | |||||
sys.argv[0], '|'.join('--'+opt for opt in valid_opts))) | |||||
sys.exit(code) | |||||
try: | |||||
opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) | |||||
except getopt.error: | |||||
exit_with_usage() | |||||
if not opts: | |||||
exit_with_usage() | |||||
pyver = sysconfig.get_config_var('VERSION') | |||||
getvar = sysconfig.get_config_var | |||||
opt_flags = [flag for (flag, val) in opts] | |||||
if '--help' in opt_flags: | |||||
exit_with_usage(code=0) | |||||
for opt in opt_flags: | |||||
if opt == '--prefix': | |||||
print(sysconfig.get_config_var('prefix')) | |||||
elif opt == '--exec-prefix': | |||||
print(sysconfig.get_config_var('exec_prefix')) | |||||
elif opt in ('--includes', '--cflags'): | |||||
flags = ['-I' + sysconfig.get_path('include'), | |||||
'-I' + sysconfig.get_path('platinclude')] | |||||
if opt == '--cflags': | |||||
flags.extend(getvar('CFLAGS').split()) | |||||
print(' '.join(flags)) | |||||
elif opt in ('--libs', '--ldflags'): | |||||
abiflags = getattr(sys, 'abiflags', '') | |||||
libs = ['-lpython' + pyver + abiflags] | |||||
libs += getvar('LIBS').split() | |||||
libs += getvar('SYSLIBS').split() | |||||
# add the prefix/lib/pythonX.Y/config dir, but only if there is no | |||||
# shared library in prefix/lib/. | |||||
if opt == '--ldflags': | |||||
if not getvar('Py_ENABLE_SHARED'): | |||||
libs.insert(0, '-L' + getvar('LIBPL')) | |||||
if not getvar('PYTHONFRAMEWORK'): | |||||
libs.extend(getvar('LINKFORSHARED').split()) | |||||
print(' '.join(libs)) | |||||
elif opt == '--extension-suffix': | |||||
ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') | |||||
if ext_suffix is None: | |||||
ext_suffix = sysconfig.get_config_var('SO') | |||||
print(ext_suffix) | |||||
elif opt == '--abiflags': | |||||
if not getattr(sys, 'abiflags', None): | |||||
exit_with_usage() | |||||
print(sys.abiflags) | |||||
elif opt == '--configdir': | |||||
print(sysconfig.get_config_var('LIBPL')) |
@ -0,0 +1 @@ | |||||
python3.5 |
@ -0,0 +1,11 @@ | |||||
#!/home/mix/PycharmProjects/kea_for_miners/venv/bin/python3.5 | |||||
# -*- coding: utf-8 -*- | |||||
import re | |||||
import sys | |||||
from wheel.tool import main | |||||
if __name__ == '__main__': | |||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
sys.exit(main()) |
@ -0,0 +1 @@ | |||||
/usr/include/python3.5m |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/__future__.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/_bootlocale.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/_collections_abc.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/_dummy_thread.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/_weakrefset.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/abc.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/base64.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/bisect.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/codecs.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/collections |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/config-3.5m-x86_64-linux-gnu |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/copy.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/copyreg.py |
@ -0,0 +1,101 @@ | |||||
import os | |||||
import sys | |||||
import warnings | |||||
import imp | |||||
import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib | |||||
# Important! To work on pypy, this must be a module that resides in the | |||||
# lib-python/modified-x.y.z directory | |||||
dirname = os.path.dirname | |||||
distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils') | |||||
if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)): | |||||
warnings.warn( | |||||
"The virtualenv distutils package at %s appears to be in the same location as the system distutils?") | |||||
else: | |||||
__path__.insert(0, distutils_path) | |||||
real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY)) | |||||
# Copy the relevant attributes | |||||
try: | |||||
__revision__ = real_distutils.__revision__ | |||||
except AttributeError: | |||||
pass | |||||
__version__ = real_distutils.__version__ | |||||
from distutils import dist, sysconfig | |||||
try: | |||||
basestring | |||||
except NameError: | |||||
basestring = str | |||||
## patch build_ext (distutils doesn't know how to get the libs directory | |||||
## path on windows - it hardcodes the paths around the patched sys.prefix) | |||||
if sys.platform == 'win32': | |||||
from distutils.command.build_ext import build_ext as old_build_ext | |||||
class build_ext(old_build_ext): | |||||
def finalize_options (self): | |||||
if self.library_dirs is None: | |||||
self.library_dirs = [] | |||||
elif isinstance(self.library_dirs, basestring): | |||||
self.library_dirs = self.library_dirs.split(os.pathsep) | |||||
self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs")) | |||||
old_build_ext.finalize_options(self) | |||||
from distutils.command import build_ext as build_ext_module | |||||
build_ext_module.build_ext = build_ext | |||||
## distutils.dist patches: | |||||
old_find_config_files = dist.Distribution.find_config_files | |||||
def find_config_files(self): | |||||
found = old_find_config_files(self) | |||||
system_distutils = os.path.join(distutils_path, 'distutils.cfg') | |||||
#if os.path.exists(system_distutils): | |||||
# found.insert(0, system_distutils) | |||||
# What to call the per-user config file | |||||
if os.name == 'posix': | |||||
user_filename = ".pydistutils.cfg" | |||||
else: | |||||
user_filename = "pydistutils.cfg" | |||||
user_filename = os.path.join(sys.prefix, user_filename) | |||||
if os.path.isfile(user_filename): | |||||
for item in list(found): | |||||
if item.endswith('pydistutils.cfg'): | |||||
found.remove(item) | |||||
found.append(user_filename) | |||||
return found | |||||
dist.Distribution.find_config_files = find_config_files | |||||
## distutils.sysconfig patches: | |||||
old_get_python_inc = sysconfig.get_python_inc | |||||
def sysconfig_get_python_inc(plat_specific=0, prefix=None): | |||||
if prefix is None: | |||||
prefix = sys.real_prefix | |||||
return old_get_python_inc(plat_specific, prefix) | |||||
sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__ | |||||
sysconfig.get_python_inc = sysconfig_get_python_inc | |||||
old_get_python_lib = sysconfig.get_python_lib | |||||
def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None): | |||||
if standard_lib and prefix is None: | |||||
prefix = sys.real_prefix | |||||
return old_get_python_lib(plat_specific, standard_lib, prefix) | |||||
sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__ | |||||
sysconfig.get_python_lib = sysconfig_get_python_lib | |||||
old_get_config_vars = sysconfig.get_config_vars | |||||
def sysconfig_get_config_vars(*args): | |||||
real_vars = old_get_config_vars(*args) | |||||
if sys.platform == 'win32': | |||||
lib_dir = os.path.join(sys.real_prefix, "libs") | |||||
if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars: | |||||
real_vars['LIBDIR'] = lib_dir # asked for all | |||||
elif isinstance(real_vars, list) and 'LIBDIR' in args: | |||||
real_vars = real_vars + [lib_dir] # asked for list | |||||
return real_vars | |||||
sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__ | |||||
sysconfig.get_config_vars = sysconfig_get_config_vars |
@ -0,0 +1,6 @@ | |||||
# This is a config file local to this virtualenv installation | |||||
# You may include options that will be used by all distutils commands, | |||||
# and by easy_install. For instance: | |||||
# | |||||
# [easy_install] | |||||
# find_links = http://mylocalsite |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/encodings |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/fnmatch.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/functools.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/genericpath.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/hashlib.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/heapq.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/hmac.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/imp.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/importlib |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/io.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/keyword.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/lib-dynload |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/linecache.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/locale.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/ntpath.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/operator.py |
@ -0,0 +1 @@ | |||||
/usr |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/os.py |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/plat-x86_64-linux-gnu |
@ -0,0 +1 @@ | |||||
/usr/lib/python3.5/posixpath.py |
Powered by TurnKey Linux.