250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- kubernetes
- 파이썬
- GUI
- 파이토치
- 컴퓨터 비전
- 데이터베이스
- yaml
- pytorch
- OpenCV
- vue.js
- Django
- Computer Vision
- paper review
- 웹 프로그래밍
- numpy
- 텐서플로우
- MariaDB
- k8s
- FLASK
- Docker
- 장고
- POD
- 딥러닝
- Deep Learning
- Tkinter
- 그래픽 유저 인터페이스
- 논문 리뷰
- Python
- Web Programming
- tensorflow
Archives
- Today
- Total
Maxima's Lab
[Python] .bat 파일을 활용하여 공유 폴더 설정 및 해제(Windows) 본문
728x90
SMALL
안녕하세요, 오늘은 Windows 운영체제에서 .bat 파일을 활용하여 파이썬에서 공유 폴더 설정 및 해제 하는 방법에 대해서 알아보겠습니다.
공유 폴더 설정 및 해제를 위해 유의해야할 부분은 "관리자 권한"으로 실행해야한다는 부분입니다.
관리자 권한으로 실행하기 위해서 다음과 같이 .bat 파일을 구성해야 합니다.
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
{실행할 명령어}
pause
위의 .bat 파일에서 {실행할 명령어} 부분만 수정하면 됩니다.
위의 파일을 활용하여, 다음과 같이 코드를 수정합니다.
def create_admin_batch(script_name):
batch_content = f"""
@echo off
>nul 2>&1 "%SYSTEMROOT%\\system32\\cacls.exe" "%SYSTEMROOT%\\system32\\config\\system"
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\\getadmin.vbs"
"%temp%\\getadmin.vbs"
del "%temp%\\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
{script_name}
pause
"""
with open("run_as_admin.bat", "w") as file:
file.write(batch_content)
print("배치 파일이 생성 완료.")
위의 함수를 활용하여, 다음과 같이 관리자 권한으로 batch 파일을 실행 가능합니다.
import subprocess
def run_batch_file(batch_file_path):
# 프롬프트가 보이지 않도록 설정
si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
si.wShowWindow = subprocess.SW_HIDE # CMD 창을 숨깁니다.
# subprocess.run을 사용하여 배치 파일 실행
result = subprocess.run(batch_file_path, shell=True, text=True, capture_output=True, startupinfo=si)
# 실행 결과 출력
if result.returncode == 0:
print("배치 파일이 성공적으로 실행되었습니다.")
print("출력:", result.stdout)
else:
print("배치 파일 실행 중 오류가 발생했습니다.")
print("오류 메시지:", result.stderr)
# 배치 파일 경로 지정
batch_file_path = 'run_as_admin.bat'
# 배치 파일 실행 함수 호출
run_batch_file(batch_file_path)
위의 2가지 함수를 활용하여 공유 폴더를 생성하는 함수를 실행할 수 있습니다.
import subprocess
def create_shared_folder(share_name, folder_path):
# 공유명과 폴더 경로를 설정합니다.
# /grant:everyone,full은 모든 사용자에게 전체 권한을 부여합니다.
cmd = f'net share {share_name}="{folder_path}" /grant:everyone,full'
create_admin_batch(cmd)
# 배치 파일 경로 지정
batch_file_path = 'run_as_admin.bat'
# 배치 파일 실행 함수 호출
run_batch_file(batch_file_path)
folder_path = "D:\\새로운 공유 폴더"
share_name = "MySharedFolder"
create_shared_folder(share_name, folder_path)
반대로 공유 폴더를 해제하는 함수를 실행할 수 있습니다.
import subprocess
def remove_shared_folder(share_name):
cmd = f'net share {share_name} /delete'
create_admin_batch(cmd)
# 배치 파일 경로 지정
batch_file_path = 'run_as_admin.bat'
# 배치 파일 실행 함수 호출
run_batch_file(batch_file_path)
share_name = "MySharedFolder"
remove_shared_folder(share_name)
지금까지, Windows 운영체제에서 .bat 파일을 활용하여 Python에서 공유 폴더를 설정 및 해제 하는 방법에 대해서 알아보았습니다.
감사드립니다.
728x90
LIST
'Python' 카테고리의 다른 글
[Python] YAML (.yaml) 파일 작성 및 사용 하는 방법 (0) | 2024.07.10 |
---|---|
[Python] Cryptography 라이브러리 (hazmat 모듈) 사용법 (0) | 2024.07.09 |
[Python] 공유 폴더 설정 및 삭제 하기 (Ubuntu, Samba, smbclient, mount/unmount) (0) | 2024.05.07 |
[Python] 파이썬으로 한글 Text를 Encoding, Decoding 하는 방법 (0) | 2024.04.13 |
[Python] 쉘 스크립트 (배치) 파일 내부에서 쉘 스크립트 (배치) 파일 실행하는 방법 (0) | 2024.02.27 |
Comments