첫 번째 로그인 후 사용자에게 메시지 보내기

첫 번째 로그인 후 사용자에게 메시지 보내기

직후에 사용자에게 메시지를 표시하는 방법이 있습니까?첫 번째로그인?

나는 그에게 "이 계정으로 처음 로그인하는 것입니다"라고 보여주고 싶습니다.

답변1

계정을 생성할 때 이라는 파일을 생성하세요 ~/.not_logged_in_yet. 아무 것도 포함할 필요는 없으며 파일만 존재하면 됩니다.

touch ~user/.not_logged_in_yet        # create the file
chown user ~user/.not_logged_in_yet   # should be owned by the user
chmod u+rw ~user/.not_logged_in_yet   # user must be able to delete it

그런 /etc/profile.d/check_first_login.sh다음

#!/bin/bash
# only do this for interactive shells
if [ "$-" != "${-#*i}" ]; then
    if [ -f "$HOME/.not_logged_in_yet" ]; then
        echo "Welcome, this is your first login"
        rm "$HOME/.not_logged_in_yet"
    fi
fi

bash를 셸로 사용하여 로그인하면 셸이 소스 코드를 가져옵니다 /etc/profile(참조:배시 시작 파일설명서에 있음). /etc/profile소스의 모든 *.sh파일 /etc/profile.d/이므로 여기에 파일을 추가하면 컴퓨터의 모든 사용자가 볼 수 있습니다.

세션이 다음 상태일 때만 메시지를 인쇄하려고 합니다.인터렉티브. 귀하의 프로필에서 무엇이든 인쇄하면 비대화형으로 간주되는 콘텐츠가 깨질 수 있습니다(예를 들어 ssh-copy-id이것이 특별히 깨질지는 모르겠지만). bash 변수에는 $-다음 명령을 사용하여 설정된 일부 설정이 포함되어 있습니다 set.

$ bash -c 'echo $-; set -ex; echo $-'
hBc
+ echo ehxBc
ehxBc

이 형태의 매개변수 확장은 ${-#*i}"i"로 끝나는 선행 하위 문자열을 제거합니다. $-대화형 bash 세션인 경우 "i"만 포함되므로 "$-"세션이 대화형인 경우에만 동일하지 않습니다. "${i#*i}"이를 테스트하는 다른 방법이 있습니다.이 쉘은 대화형입니까?-- 이 방법을 사용하는 이유는 /etc/profile이 수행하는 작업이기 때문입니다.

관련 정보