배치 파일을 통해 PuTTY에 로그인한 후 원격 서버에서 sudo를 사용하여 명령 실행

배치 파일을 통해 PuTTY에 로그인한 후 원격 서버에서 sudo를 사용하여 명령 실행

매일 원격 서버에 로그인하여 동일한 작업을 수행해야 합니다. 저는 Windows 플랫폼을 사용하고 있으며 원격 서버는 Unix입니다. PuTTY를 사용하여 원격 서버에 로그인합니다. 수동 작업을 줄이려면 이 작업을 자동화해야 합니다.

나는 이 코드를 시도했다:

start putty.exe -ssh -load session -l username -pw password -m command.txt -t

다음을 command.txt포함합니다:

sudo su - user1 
ls 
cd directory

첫 번째 명령만 command.txt작동하고 PuTTY는 사용자의 입력을 기대합니다.

사용자 입력 없이 실행하려면 모든 명령이 필요합니다.

중요한 사항:

  • 나는 루트 사용자가 아닙니다

  • user1비밀번호 없이 전환할 수 있는 액세스 권한이 부여되었습니다.

  • PuTTY만 사용해야 한다는 제약이 있습니다. (Plink 설치는 불가합니다.)

답변1

에 포함된 명령은 다음 command.txt에 의해 실행되기 때문입니다.마스터 쉘하나씩.

따라서 마스터 셸은 을 실행하고 sudo다른 명령( lscd)을 진행하기 전에 종료될 때까지 기다립니다. 그리고 는 sudo종료되지 않습니다(적어도 자체적으로는 종료되지 않습니다).

당신이 원하는 동안 lscd실행 내에서어린이 껍질에 의해 실행됩니다 su.

su명령을 실행하도록 지시해야 합니다 .

이것은 작동합니다:

sudo su - -c "ls ; cd directory" user1

아니면 이거

echo "ls; cd directory" | sudo su - user1

하지만 나는 당신이 실제로 쉘에서 계속 작업하기를 원할 것으로 예상합니다. 명령이 실행되면 위의 내용이 종료됩니다.

따라서 명령 목록에 셸을 추가하려고 합니다.

sudo su - -c "ls ; cd directory ; /bin/bash" user1

또는

echo "ls ; cd directory ; /bin/bash" | sudo su - user1

관련 정보