로그에서 실행된 명령을 표시하려면 스크립트에서 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절. “비밀번호 보안에 대한 최종 사용자 가이드”.