SSH 사용자에게 메뉴 제공 또는 푸시

SSH 사용자에게 메뉴 제공 또는 푸시

SSH를 통해 내 데비안 장치에 로그인하는 모든 사용자에게 메뉴를 자동으로 표시하고 싶습니다. 현재는 로그인하고 명령줄에서 menu.sh 스크립트를 수동으로 실행해야 합니다. 이것이 가능합니까?

답변1

/etc/profile(시스템 전체) 또는 ~user/.profile(사용자별, 모든 bourne 쉘) 또는 ~user/.bash_profile(사용자별, bash별) 또는 유사한 스크립트를 편집하여 메뉴를 호출할 수 있습니다.

만약 너라면오직SSH를 통해 로그인한 사용자에게 표시하려면 SSH_CLIENT환경 변수가 설정되어 있는지 확인하세요.

if [ ! -z "$SSH_CLIENT" ]; then
    menu.sh
fi

그렇지 않으면 다음 용도로 사용됩니다.모든로그인. 또한 다음을 수행해야 합니다.아니요.bashrc파일에 넣으세요 . .bashrc와 또는 전자 .profile의 차이점은 .bash_profile다음과 같습니다.모든쉘은 시작되고 후자는 시작됩니다로그인껍데기.

답변2

이것은 @Wouter의 답변에 대한 대안입니다.

대부분의 *nix 시스템에는 "/etc/passwd"와 같은 사용자 데이터를 저장하는 파일이 있습니다. 이 파일은 사용자 계정에 대한 여러 정보를 저장하며, 그 중 하나는 사용자가 로그인/비밀번호를 올바르게 보낼 경우 실행되는 "셸"입니다. 다음 예에서는 사용자가 시스템에 로그인할 때 실행되는 bash를 보여줍니다.

slave:x:0:0:Linux Slave User,,,:/home/user:/bin/bash

이렇게 하면 마지막 부분을 실행하려는 항목으로 변경할 수 있습니다.

그렇다면 이전 답변과 차이점은 무엇입니까? - 대부분의 Linux 시스템에서 이 답변은 이전 답변보다 더 안전합니다.

이 방법은 원하는 프로그램/스크립트를 직접 실행하며 - 스크립트나 프로그램이 중단되면(예: 오류) 사용자가 프로세스에 연결되어 있기 때문에 사용자가 즉시 로그아웃됩니다.

이전 답변은 사용자를 bash(또는 다른 셸)에 연결하고 실행 중인 스크립트가 완료되면 사용자는 bash 프롬프트로 직접 이동하여 Linux에서 모든 명령을 실행할 수 있습니다.

즉, 사용자가 Linux와 상호 작용할 수 있는 유일한 방법인 메뉴를 실행하는 경우 메뉴가 완료되거나 중단되지 않도록 해야 합니다. 메뉴에 버그가 있을 수 있는 경우 이 답변의 옵션을 대신 사용하세요.

수동으로 편집하는 대신 /etc/password,다음 명령을 사용할 수 있습니다(수퍼유저로):

chsh -s "your program" "login"

관련 정보