안녕하세요, 일부 작업을 자동화하고, 사용자를 로컬에서 sudo su 루트로 변경하고 ftp 서버에 연결하고, ftp에서 로컬 시스템으로 .gz 파일을 가져오고, 파일을 gunzip하고 PostgreSQL BD로 복원하지만 사용자를 변경할 수 없습니다.
내 스크립트에 사용하는 몇 가지 예제 스크립트
1. sudo -s < 생성
"사용자 이름 비밀번호:"가 필요합니다.
보내기 - "프로덕션 123\r"
Eof를 기대하다
실수:-
-bash: ./dbbackup.sh: /usr/bin: 잘못된 해석기: 권한이 거부되었습니다.
- sudo -kSs << EOF
수율 123
나는 누구인가
echo "일반 텍스트로 인코딩된 비밀번호는 좋지 않습니다."
EOF
오류: 사용자도 전환되지 않았습니다.
3.sudo -s <
"사용자 이름 비밀번호:"가 필요합니다.
보내기 - "프로덕션 123\r"
Eof를 기대하다
실수
[프로덕션 @nsuat crons]$ ./dbbackup.sh ./dbbackup.sh: 1행: EOF: 해당 파일 또는 디렉터리 없음 ./dbbackup.sh: 3행: 예상: 명령을 찾을 수 없음 ./dbbackup: 5행. : 보내기: 명령을 찾을 수 없음 ./dbbackup.sh: 7행: 예상: 명령을 찾을 수 없음 [프로덕션 @nsuat crons]$
답변1
질문이 좀 이해하기 어렵네요. 하지만 가능하다면 다른 방법을 제공해 드릴 수 있습니다. 백업을 실행할 특정 사용자를 생성하고 비밀번호 없는 sudo 권한을 부여합니다. 이제 해당 사용자로 실행되도록 cron 작업(또는 사용하는 모든 작업)을 설정하고 필요한 경우 백업 스크립트가 해당 권한을 상승(sudo)하도록 합니다.
또는 Postgres 설정 방법에 따라 Postgres 사용자가 복구를 실행하는 사용자가 되도록 할 수 있습니다.
답변2
이것을 시도해 보십시오.
echo "[Password]" | su [UserName] -c [Command/Script to be executed]