set -x가 켜져 있을 때 변수 값을 숨기는 방법

set -x가 켜져 있을 때 변수 값을 숨기는 방법

로그에서 실행된 명령을 표시하려면 스크립트에서 set -x를 사용해야 합니다.

하지만 변수 중 하나가 비밀번호이므로 비밀번호가 계획 텍스트에 표시됩니다.

변수 하나만 숨기는 방법이 있나요?

즉:

스크립트:

pas=test123

set -x
mysql -uroot -p$pas

산출:

[root@server1]# ./teste.sh
++ mysql -uroot -ptest123

test123출력에서 제거하고 싶습니다 .

답변1

만들다 ~/.my.cnf:

[client]
user=DB_user
password="xxx"

이제 스크립트에서 -u및 플래그를 사용하지 않고도 로그인 할 수 있습니다.-p

set -x문제가 되는 것은 스크립트의 출력 뿐만 아니라 대부분의 시스템에서 실행 중인 모든 프로세스에 대한 명령줄 인수가 ps모든 사용자에게 표시되므로 거기에 비밀번호를 전달하는 것이 완전히 안전하지 않다는 점에 유의하십시오.이것은 MySQL 매뉴얼에도 언급되어 있습니다.옵션에서 --password:

명령줄에서 비밀번호를 지정하는 것은 안전하지 않은 것으로 간주되어야 합니다. 명령줄에 비밀번호를 입력하지 않으려면 옵션 파일을 사용하세요. 바라보다8.1.2.1절. “비밀번호 보안에 대한 최종 사용자 가이드”.

관련 정보