나는 파워 쉘 스크립트에서 특수 문자로 암호를 전달해야 automation.ps1
배치 스크립트에 batch_script.bat
있는 파이프가에 main.py
. 에서 배관 batch_script.bat
에 main.py
작품 벌금, 그 인증에 성공합니다. 그러나 위에서 설명한 전체 절차를 실행하면 인증이 실패하지만 echo
암호를 입력하면 올바른 암호 문자열이 표시됩니다.
내 생각 엔 특수 문자에 문제가있는 것 같습니다. 이 문자열을 전달하는 안전한 방법은 무엇입니까?
배경
Python 스크립트를 통해 외부 소스에서 매일 다운로드하는 작업을 자동화하고 싶습니다 main.py
. 이 프로세스에는 암호가 필요합니다. 그래서 batch_script.bat
암호를 묻는 메시지가 표시되면 Python 스크립트에 암호를 파이프 하는 파일 을 작성 했습니다. 그러나 배치 스크립트에 암호를 일반 텍스트로 저장하고 싶지 않기 때문에 암호를 암호화하고 암호 automation.ps1
를 해독하고 일반 텍스트로 batch_script.bat
.
automation.ps1
# get password
$securePassword = Get-Content "<file_path>" | ConvertTo-SecureString
$credentials = New-Object System.Management.Automation.PsCredential("<user_name>",$securePassword)
$unsecurePassword = ($credentials).GetNetworkCredential().Password
# call script
$script = "<path>\batch_script.bat"
$args = @("`"<user name>`"","`"$unsecurePassword`"")
start-process $script $args
batch_script.bat
(이 예에서는 전달 된 사용자 이름을 버리고 관련성이있는 경우 여러 인수를 전달한다는 사실을 보존하고 싶었습니다.)
@echo off
SET username=%~1
SET password=%~2
echo(%password%|python main.py
/ -argumentlist
스위치를 사용하여 powershell의 배치 파일에 인수를 전달 합니다. 당신은 다음을 사용할 수 있습니다.start
saps
saps "$script" -argumentlist $args
그러나 $args
인수를 전달하기 위해서는 일반적으로 다음과 같이 인수를 하나씩 전달하기를 원하기 때문에 작동하지 않을 수 있으므로 먼저 헤어지는 것이 좋습니다 .
saps "$script" -argumentlist "1","2","3"
패스 $args
는 대부분의 경우 작동하지만 작동하지 않는 경우가 있습니다. 대부분의 경우 당신은 괜찮습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다