DISCLAMER : A seguinte resposta de java é para fins educacionais e apenas para diversão de codificação. Se você downvote, explique nos comentários porque.
Código
O código abaixo lê cada linha de /etc/passwd
, divide essa linha em strings com :
como separador e ordena os usuários dependendo de seu UID em ArrayLists apropriados.
pacote com.askubuntu.users.serg;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
/**
*
* A program to sort human and system users from /etc/password
*
* @author Serg Kolo
*
*/
public class UserList {
private static final String SEPARATOR = "=============";
private static final int SYS_UID_MAX = 999;
private static final int UID_MAX = 1000;
private static final String FILENAME_PASSWD = "/etc/passwd";
private static final String COLON = ":";
private static final String NOBODY = "nobody";
/**
*
* @param args
* @throws IOException
*/
public static void main(String[] args) {
File f = new File(FILENAME_PASSWD);
try (Scanner readFile = new Scanner(f)) {
ArrayList<String> humanUsers = new ArrayList<>();
ArrayList<String> systemUser = new ArrayList<>();
while (readFile.hasNext()) {
String[] field = readFile.nextLine().split(COLON);
int uid = Integer.parseInt(field[2]);
if (uid >= UID_MAX && (!NOBODY.equals(field[0]))) {
humanUsers.add(field[0]);
} else if (uid <= SYS_UID_MAX) {
systemUser.add(field[0]);
}
}
printUsers(humanUsers, "Human Users:");
printUsers(systemUser, "System Users:");
} catch (FileNotFoundException e) {
System.err.println(e.getLocalizedMessage());
}
}
/**
*
* print users
*
* @param users
* @param header
*/
private static void printUsers(ArrayList<String> users, String header) {
System.out.println(header);
System.out.println(SEPARATOR);
System.out.println(users);
System.out.println();
}
}
Procedimento
- Salve o código acima como
userlist.java
-
Compile e execute com seu IDE Java preferido. Se você preferir a linha de comando, faça
javac UserList.java && java UserList
-
A saída aparecerá no console do seu IDE
Exemplo de saída
Human Users:
=============
[xieerqi, testuser]
System Users:
=============
[root, daemon, bin, sys, sync, games, man, lp, mail, news, uucp, proxy, www-data, backup, list, irc, gnats, libuuid, syslog, messagebus, usbmux, dnsmasq, avahi-autoipd, kernoops, rtkit, saned, whoopsie, speech-dispatcher, avahi, lightdm, colord, hplip, pulse, gdm, sshd]