πŸ”’ Как Python Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° администратора | ΠŸΡ€ΠΎΡΡ‚Π°Ρ инструкция для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° администратора Python-скрипту, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

import os
import sys

def run_as_admin():
    if sys.platform.startswith('win'):
        try:
            import ctypes
            shell32 = ctypes.windll.shell32
            shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
        except Exception as e:
            print("Ошибка запуска с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора:", str(e))
            sys.exit()
    elif os.getuid() != 0:
        try:
            os.execvp("sudo", ["sudo", sys.executable] + sys.argv)
        except Exception as e:
            print("Ошибка запуска с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора:", str(e))
            sys.exit()

run_as_admin()
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ провСряСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, ΠΈ Ссли это Windows, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ctypes для запуска скрипта с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора. Если это Π½Π΅ Windows, ΠΊΠΎΠ΄ провСряСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈ Ссли ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π² администратора, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° "sudo" для выполнСния скрипта с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния Π² скриптС ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π».

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° администратора Π² Python?

ΠŸΡ€Π°Π²Π° администратора (ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π° ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) Π² Python часто Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ высоких ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ доступа ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы получСния ΠΏΡ€Π°Π² администратора Π² Python.

1. ИспользованиС модуля os

ΠœΠΎΠ΄ΡƒΠ»ΡŒ os Π² Python прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для взаимодСйствия с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого модуля ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ… с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


import os

command = "command_to_execute_as_admin"
os.system("sudo " + command)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ system ΠΈΠ· модуля os, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора. Команда "sudo" ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° с ΠΏΡ€Π°Π²Π°ΠΌΠΈ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

2. ИспользованиС модуля subprocess

ΠœΠΎΠ΄ΡƒΠ»ΡŒ subprocess прСдоставляСт Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ способ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ Π² Python. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


import subprocess

command = "command_to_execute_as_admin"
subprocess.call(["sudo", command])
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ call ΠΈΠ· модуля subprocess для выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ "sudo" ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° с ΠΏΡ€Π°Π²Π°ΠΌΠΈ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

3. ИспользованиС модуля ctypes

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ctypes позволяСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ C Π² Python. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ функциям, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π² администратора. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


import ctypes

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€Π°Π²Π° администратора
library_path = "path_to_library.dll"
my_function = ctypes.CDLL(library_path).my_function

# Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора
my_function()
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CDLL ΠΈΠ· модуля ctypes, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π² администратора. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… дСйствий.

4. ИспользованиС модуля elevate

ΠœΠΎΠ΄ΡƒΠ»ΡŒ elevate являСтся стороннСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, которая ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ запуск ΠΊΠΎΠΌΠ°Π½Π΄ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора Π² Windows. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


from elevate import elevate

elevate()
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ elevate ΠΈΠ· модуля elevate ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π΅ для запуска Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сцСнария Python с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли нСсколько способов получСния ΠΏΡ€Π°Π² администратора Π² Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ os ΠΈ subprocess для выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ctypes для Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π² администратора, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ elevate для упрощСния запуска ΠΊΠΎΠΌΠ°Π½Π΄ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора Π² Windows.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Как Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Python ΠΊΠΎΠ΄ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ Администратора?!

Π‘ΠΊΡ€ΠΈΠΏΡ‚ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора Π² Python

37 Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return Python

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΈΡ‚ΠΎΠ½ Π² список path 🐍: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… 2021

Как ввСсти нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Python? 🐍✨

πŸ”₯ПолноС руководство: Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Python Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ?

πŸ”’ Как Python Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° администратора | ΠŸΡ€ΠΎΡΡ‚Π°Ρ инструкция для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ

Как ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Python: Π»ΡƒΡ‡ΡˆΠΈΠ΅ способы ΠΈ совСты

πŸ”Ž Как ΡƒΠ·Π½Π°Ρ‚ΡŒ послСднюю Ρ†ΠΈΡ„Ρ€Ρƒ числа Π² Python? Алгоритмы ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

✏️ ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π½Π΅Ρ‚ скобок: разбираСмся с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ вопросом