다른 스크립트 내에서 호출되는 스크립트 시작에 대한 비밀번호 제공

다른 스크립트 내에서 호출되는 스크립트 시작에 대한 비밀번호 제공

나는 다른 스크립트를 호출하는 쉘 스크립트를 작성했지만 두 번째 스크립트는 비밀번호를 묻는 메시지를 표시합니다. 비밀번호를 제공하고 사용자에게 알리지 않고 프롬프트를 전달하고 싶습니다.

이것은 내 스크립트입니다.

su - s3 -c "su.sh"

나는 이전에 시도했습니다:

su - s3 -c "echo pass | su.sh"

하지만 오류가 발생합니다.

standard in must be a tty

고쳐 쓰다:

명령의 스크린샷.

여기에 이미지 설명을 입력하세요.

나도 피곤해:

 su - s3 -c "echo mypass|sudo -S su.sh"

하지만 또 다른 오류가 발생합니다.

sudo: sorry, you must have a tty to run sudo

su.sh 명령:

if [ ! -n "$IS_WINDOWS" ]
then
   /bin/su root -c "...."
fi

답변1

하나 열어야 할 것 같습니다푸티. 당신은 시도 할 수 있습니다socat:

echo pass | socat -  exec:su.sh,pty,stderr,su=s3,ctty

이렇게 하면 보안 문제가 될 수 있는 명령줄 인수에 암호가 표시되지 않습니다.

더 나은 옵션은 su.sh더 이상 비밀번호가 필요하지 않은 방식으로 수정하는 것입니다.

답변2

당신은 그것을 사용할 수 있습니다예상되는프로그램은 비밀번호를 요청하면 응답을 제공합니다. 여기에는 비밀번호를 하드코딩하는 보안 문제도 있으며 일반적으로 비밀번호 없이 명령을 실행하도록 sudo 규칙을 설정하는 것이 가장 좋습니다.

관련 정보