とびきり長い近況報告を綴る日記

日常生活を綴るブログにします。技術雑記は こちら ⇒ https://seno0xff.wordpress.com/

Ubuntuのpasswdファイルから要素を切り出した話

お疲れ様です。瀬野です。

ソースコードを見やすくしたいのでデザインを変更しました。
はてなって便利。しゅき…

senobro.hatenablog.com


あと、Perlに入学してから1週間経ちました。

現場が忙しくなる前に本を読み進めながら色々書いてました。 

んで、こうすればUbuntuの各ユーザ情報を引っ張り出せるみたいなコードが有ったので、
書いてみました。

login.pl

#! /usr/bin/env perl
use strict;
use warnings;

open(FILE, '/etc/passwd') or die "$!";
foreach my $line (<FILE>){
	my(	$login,
		$passwd,
		$uid,
		$gid,
		$realname,
		$home,
		$shell,
	)
	= split(/:/, $line);

	print "login = $login, realname = $realname\n";
}
close(FILE);

実行した結果がこちらです。

f:id:senobro:20170422211549p:plain

Ubuntuには/etc配下にpasswdファイルというものがありまして、
ログインの際に必要な情報が含まれてます。とても大事なファイルですね。

2.2 パスワードファイル /etc/passwd の構造
↑参考文献はこちら

今回出力したものはユーザ名と、コメント欄で、パスやシェルなどは出力していません。
ひとまず自分とゲストのログイン名だけを書き出しました。

実行結果を全部書き出しても問題ないような気はしますが…念のため省きました。
実際は切り取った出力結果の上にpasswdファイルの中身が大量にあります。

読みやすいコードになっているかは、自信ありません。サーセン

あとは、本を読みながら遊びでこんなのも書きました。
他にも何個か書いてますが、書き出すとキリがないのでまた今度。
Git出来るようになったら楽なんだろうなあ…

guruguru.pl

#! /usr/bin/env perl
use strict;
use warnings;

my $a = 1;
my $b = 3;
my $c = 5;
my $d = 7;
my $e = 9;

#ヘビロテ
foreach (0..20){
	print "$a,$b,$c,$d,$e\n";
		($a, $b, $c, $d, $e) = ($b, $c, $d, $e ,$a);
}

f:id:senobro:20170422213407p:plain

奇数がぐーるぐる回ってます。
ジョジョが好きな人は素数にでもすればいいのではと思います(適当)
変数の書き方がこれだとあまりよろしくない気もするので、その辺はまたおいおいレベルを上げながら…

続きはまた次回