목적
연구실 컴퓨터에서 하드웨어 및 소프트웨어 정보를 수집하고 학생의 개인정보를 존중합니다.
수집되는 정보의 유형
예:
- 시스템 메모리
- 배쉬 버전
- JVM 버전
- OS 버전(빌드/마지막 업데이트)
사용자 그룹
- 운영 체제
- 리눅스
- FreeBSD
정보 유형피하다모으다
- CPU 일련번호
- 컴퓨터 일련 번호(예제 출력
sudo lshw
) - 네트워크 인터페이스 카드 MAC 주소
배달 방법
- 클라이언트는 랩 네트워크에 참여하고 일반 사용자(예: 아님
root
) 로 Bash 스크립트를 실행합니다.
제한
- 프로세스 배경 없음
- 배포 패키지 외부에 맞춤형 소프트웨어를 설치할 필요가 없습니다.
- 개인정보는 어디에서도 읽을 수 없습니다.
- 대리인 없음
- 나중에 시간/날짜에 다시 실행하도록 자체 예약할 수 없습니다.
- 스크립트는 오픈 소스로 유지되며 학생들이 언제든지 볼 수 있습니다(완전한 투명성)
허용되는 것
- 스크립트가 실행될 때까지 네트워크 액세스를 차단합니다(참고: 이 작업을 수행하는 코드는 이미 존재하며 실제로 "보고서"가 다시 전송되어 확인될 때까지 VLAN을 작동 중지 상태로 유지합니다. 이것을 코딩할 필요가 없습니다.)
- 단 한 명의 사용자만이 16GB RAM을 갖고 있다면, 이는 해당 사용자를 고유하게 식별하더라도 괜찮습니다.
허용되는 명령의 예
printf -v operating_system \
'OS X v%s (build %s)' \
$(sw_vers -productVersion) \
$(sw_vers -buildVersion)
또는
local -r linux_kernel_version=$(uname -r)
printf -v operating_system \
'Linux (kernel %s)' \
"$linux_kernel_version"
if [[ -f /etc/issue ]]; then
operating_system+=" $(cat /etc/issue | sed 's/ \\n \\l//g')"
fi
건강 상태
그러한 스크립트가 이미 다른 곳에서 사용 가능하고 사용자 프로필 "정리"에 개인 식별 정보가 포함되어 있지 않으며 지원 센터에 유용하다면 잘못된 프로젝트를 선택한 것입니다. 기존 프레임워크를 사용하고 학습자의 에너지를 다른 곳으로 보내는 것이 더 좋습니다.
답변1
귀하께서 요청하신 특정 항목은 간단하며 수집이 가능합니다. 뭔가 좀 더 복잡한 것을 생각하고 계신 것 같지만, 구체적으로 말씀하지 않으시면 아무것도 추측할 수 없습니다.
시스템 메모리
$ free -h | gawk '/Mem:/{print $2}' 7.8G
배쉬 버전
$ bash --version | head -1 GNU bash, version 4.2.36(1)-release (x86_64-pc-linux-gnu) $ bash --version | head -1 | gawk '{print $4}' 4.2.36(1)-release
JVM 버전
$ java -version 2>&1 | head -1 java version "1.6.0_24" $ java -version 2>&1 | head -1 | gawk '{print $NF}' | sed 's/"//g' 1.6.0_24
이
java -version
명령은 표준 오류(STDERR)로 인쇄하므로 구문 분석을 위해서는 STDERR을 STDOUT으로 리디렉션해야 합니다. Bash에서는2>&1
.OS 버전(빌드/마지막 업데이트)
$ uname -vo #1 SMP Debian 3.2.32-1 GNU/Linux
마지막 업데이트가 무엇을 의미하는지 잘 모르겠습니다. 무엇을 업데이트할까요? 핵심? 소프트웨어가 있나요?
이 모든 것을 bash 스크립트로 결합하면 다음을 얻을 수 있습니다.
#!/usr/bin/env bash
echo "RAM : `free -h | awk '/Mem:/{print $2}'`
Bash version : `bash --version | head -1 | awk '{print $4}'`
Java version : `java -version 2>&1 | head -1 | awk '{print $NF}' | sed 's/\"//g'`
Operating System : `uname -s`
OS version : `uname -v`"
이 간단한 스크립트는 내 시스템에서 다음 출력을 반환합니다.
RAM : 7.8G Bash version : 4.2.36(1)-release Java version : 1.6.0_24 Operating System : Linux OS version : #1 SMP Debian 3.2.32-1
답변2
이것은 적합한 명령 목록이지만 dpkg는 Debian 기반 시스템에서만 작동합니다. Mac/FreeBSD에서는 최선의 접근 방식이 무엇인지 잘 모르겠지만 이것이 좋은 시작이 될 것입니다. 우분투를 새로 설치할 때 이들 중 어느 것도 설치할 필요가 없습니다.
그러면 설치된 패키지의 전체 목록과 간단한 설명이 포함된 버전이 제공됩니다.
dpkg -l >> pkg.info
우분투의 lshw에는 민감한 정보를 제외하는 옵션이 있습니다
lshw -sanitize
이것은 우분투의 버전 정보를 보여줍니다.
lsb_release -a
메모리 정보
free
내 제안은 이 모든 정보를 별도의 .info 파일에 저장한 다음 쉽게 수집할 수 있도록 tar 파일에 저장하는 스크립트를 만드는 것입니다. "dpkg -l" 뒤에 정보를 원하는 특정 패키지와 일치하는 패턴을 넣을 수 있습니다. "dpkg -p"는 "dpkg -p bash"와 같이 특정 패키지에 대한 매우 자세한 정보를 표시합니다.
답변3
유사 시스템 확인개방형 컴퓨터 시스템. 주변에 몇 군데가 있습니다. Google에 "하드웨어 소프트웨어 인벤토리" 등을 요청하세요. 스스로 뭔가를 모아보세요~ 할 것이다파괴적이거나 안전하지 않습니다.
답변4
요리사소프트웨어 및 구성 배포라는 주요 목적 외에도 찾고 있는 모든 클라이언트에 대한 하드웨어 정보가 포함된 데이터베이스도 유지 관리합니다.
Chef 서버를 처리하지 않고 Chef 클라이언트에서 이 정보를 얻은 다음 다른 프로세스를 통해 정보를 집계하려는 경우 원하는 것은 다음과 같습니다.오하이, 다음과 같은 출력을 생성합니다.https://gist.github.com/sparr/5265567