짧은 명령으로 사용자와 서버를 식별하는 방법은 무엇입니까?

짧은 명령으로 사용자와 서버를 식별하는 방법은 무엇입니까?

저는 학생들에게 Unix 운영 체제(및 Linux)의 기본 사항을 4주 동안 가르쳐 왔습니다. 다음으로 나는 그들에게 숙제를 주고 싶습니다. 이번이 첫 번째이므로 질문이나 과제는 어렵지 않을 것입니다. 나의 유일한 실제 목표는 학교, 집 또는 어디에서든 모든 사람이 자신의 Unix 환경에 액세스할 수 있도록 하는 것입니다. 또한 그들이 서로의 답변을 복사했는지 확인하고 싶습니다. 그들은 복사하고 공유하는 것을 좋아합니다.

학생들이 답을 작성할 수 있는 종이가 제공됩니다. 첫 번째 질문은 "1. 이름, 학번". 두 번째는 다음과 같습니다.

"2. 다음 명령의 출력은 무엇입니까?"

whoami, who, 또는 who|tail -1짧게 유지하기 위해 같은 명령을 생각해 보았지만 hostname모두 약점이 있습니다.

배경 지식: 학교에는 자신만의 Unix 사용자 계정이 없으며, 다른 워크스테이션에서 동일한 사용자 이름을 사용합니다. 대화형 서버도 없습니다. 일부 학생들은 Linux가 설치된 부팅 가능한 플래시 드라이브를 가지고 있습니다. 맥북을 사용하시는 분들도 계십니다. 대부분의 학생들에게는 Unix 사용법을 아는 친구가 한두 명 정도 있습니다.

그래서 저는 두 번째 질문에 대한 아이디어를 찾고 있습니다. 나는 그 대답이 진짜이고 모두가 Unix를 직접 사용하고 있는지 확인하고 싶습니다.

답변1

문제를 점진적이고 상호의존적으로 만들 수 있습니다. 따라서 다음을 수행할 수 있습니다.

  1. 실행 MAGIC=$(uuidgen)하고 출력을 제공합니다.

    echo $MAGIC
    
  2. 출력은 다음과 같습니다.

    MAGIC_NUMBERS=$(printf '%d\n' "0x$(echo $MAGIC | cut -d- -f1)")
    echo $MAGIC_NUMBERS
    
  3. 출력은 다음과 같습니다.

    echo "$MAGIC_NUMBERS * 3" | bc
    
  4. 다음 명령을 수정하고 출력을 제공합니다.

    bc <<< $MAGIC_NUMBERS - 4 >> $MAGIC && cat $MAGIC
    

분명히 같은 세션 내에서 질문에 순서대로 답변해야 한다는 점을 어딘가에 명시해야 합니다.

$MAGIC변수가 반복될 확률은 uuidgen극히 미미하지만 여기서 사용하는 처리 명령 중 일부는 약간 어렵습니다. .bc

답변2

댓글에서 말했듯이

uname -a ; who am i

uname -a시스템에 대한 정보 제공

Linux mybox 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

who am iw유닉스 사용자들에게 말해주세요

archemar pts/0        2014-09-15 09:41 (172.16.17.77)

물론 이것은 학생들 사이에서 복제될 수 있습니다(예를 들어).

 Linux anotherbox 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

uname -a 열을 정렬하면 누가 답변을 공유하는지 추측할 수 있습니다(수천 명의 학생이 없는 경우).

관련 정보