
매일 원격 서버에 로그인하여 동일한 작업을 수행해야 합니다. 저는 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
다른 명령( ls
및 cd
)을 진행하기 전에 종료될 때까지 기다립니다. 그리고 는 sudo
종료되지 않습니다(적어도 자체적으로는 종료되지 않습니다).
당신이 원하는 동안 ls
및 cd
실행 내에서어린이 껍질에 의해 실행됩니다 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