#!/bin/bash
who |grep "10\.1\.109" | grep -v berianho | cut -f1 -d " " | sort -n|
while read user
do
grep -a ^$user: /etc/passwd | cut -f5 -d:
done
답변1
간단한 Perl 스크립트...
#!/usr/bin/perl
my %hash;
open FH, 'who |' or die;
while ( <FH> ) {
$hash{$1}++ if /^(\S+).*(10\.\d+\.\d+\.\d+)/;
}
close FH;
while ( ($k,$v) = each %hash ) {
printf "%3d %s\n", $v, $k;
}
exit;
답변2
이것이 당신이 원하는 것에 대한 나의 가정입니다.
#!/bin/bash
list="$(who |grep "10\.1\.109" | grep -v berianho | cut -f1 -d " ")"
unique="$(echo ${list} | tr ' ' '\n' | sort | uniq)"
for student in $unique
do
echo "Student $(grep -a ^${student}: /etc/passwd | cut -f5 -d ":" ) has number of $(echo "$list" | tr ' ' '\n' | grep ${student} | wc -l) logins."
done
예제 출력에서는 AAA에 대한 항목 3개(passwd에 AAA AAA로 명명됨), BBB에 대해 1개의 항목(passwd에 BBB BBB로 명명됨), CC에 대한 항목 1개(passwd에 CCC CCC로 명명됨)가 있다고 가정합니다 who
. 출력은 다음과 같아야 합니다.
Student AAA AAA has number of 3 logins.
Student BBB BBB has number of 2 logins.
Student CCC CCC has number of 1 logins.