사용자가 스크립트에 제공한 옵션/인수를 포함하여 사용자가 실행한 스크립트의 전체 이름을 기록하고 싶습니다.
basename
나는 사용하여 약간의 성공을 거둘 수 있었지만 whoami
그것은 나에게 논쟁을 불러일으키지 않았습니다.
예:사용자가 다음과 같은 스크립트를 실행한다고 가정해 보겠습니다.
root@host1:./collect_user_summary.ksh -h 20 -l 10 -x local
내 로그 파일에 원하는 출력:
"collect_user_summary.ksh -h 20 -l 10 -x local"
내가 달성한 것:그리고 basename
나는 whoami
얻을 수 있습니다
"collect_user_summary.ksh username"
내 환경: 솔라리스 10, 콘셸.
답변1
업데이트: 여러분 대부분이 터미널에 입력된 모든 명령을 기록하도록 지시한 것으로 보입니다. 나는 그것을 원하지 않습니다. 내가 원하는 것은 누군가가 내 스크립트를 실행할 때마다 스크립트 이름과 함께 그가 제공하는 옵션을 기록하기만 하면 되는 것입니다.
잠시 생각한 끝에 마침내 이해하게 되었습니다. 나는 그것을 달성하기 위해 다음 방법을 사용하고 있습니다. 예시 스크립트:
#!/bin/ksh
NAME=`basename $0`
echo `date` $WHOAMI ran this script $NAME with options -h $HVARIABLE -l $LVARIABLE -x $LOCALVARIABLE >> scripts.log
.
..
..
....
echo "SUCCESS" >> scripts.log
exit 0
내 모든 스크립트에 이 두 줄을 포함함으로써 누가 무엇을 하고 있는지, 그들이 제공하는 옵션은 무엇인지 기록할 수 있습니다.