Pythonのコンソールを開いて色々試してみる

 

Pythonの環境がすでに入っており、パスが通っていることを仮定して書きますね。まずはバージョンを確認しましょう。

Pythonのバージョンを確認する

コマンドは 「python -V」です。

Anaconda3>python -V
Python 3.6.4 :: Anaconda, Inc.

python3.6と出ました。バージョン3.xは2.xから大きく文法や関数が変わっており、互換性が担保されていません。これから開発する方は新しい3.xから入れることでしょう。

Anaconda,Inc.と出ているのは統合開発環境アナコンダ入れてみたからです。あまり使っていませんが…。

Pythonコマンドラインを起動する

コマンドは「python」でいけます。もし2.x、3.xと異なるバージョンを共存させている環境であれば、python2とかpython3とバージョン番号もふってあげてください。

\Anaconda3>python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

このような感じで立ち上がりましたね。今日は眠いので軽くlistが内包してるモジュールの一覧を出してみます。

型とかモジュールが内包している定義を全部表示してみる

方法は「dir(型名)」で表示されます。

>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
'__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__',
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__',
'__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend',
'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

なるほど。全部出たみたいです。ほう、countなんてものがありますね。何に使うのか、公式ドキュメントを読むのも良いですが、せっかくコンソールを開いているので実際に使ってみるのが近道です。理解よりも今ある熱情を重視。これエンジニアの鉄則。(なにそれ?)

>>> x=[1,2,3,3,4,5,5,5,5,]
>>>
>>> x.count(5)
4

なるほど、データの個数をカウントしてくれるのね。意外と使う場面ありそう。pythonのこういうところ、好きです。おやすみなさい。

Ubuntuにfreeradiusを入れてみる

radiusとは

Remote Authentication Dial-In User Serviceの略。
Radiusサーバー、Radiusクライアント、ユーザーから構成されています。Radiusサーバーがユーザーを認証し、認証成功したユーザーのみを通したりするためのプロトコルです。
Radiusには2つのサービスが備わっています。

    • Authentication
      名前の通り、ユーザーを認証するための機能です。Radiusサーバーはユーザーから送られてきた認証要求(access request)を受取ります。その中にあるユーザー名とパスワードを照合し、認証した場合は認証許可(Access-Accept)メッセージを送ります。
    • Accounting
      Radiusはまだインターネットがダイヤルアップ時代から使われていたプロトコルです。ユーザーがパケットを使用したとき、〜バイト〜円といった課金情報を保持する役割も担っていました。Accountingサービスはそのためのものです。

また、RadiusクライアントをNAS(network access server)、ユーザーをSupplicantと呼んだりもします。

 

ubuntuにfreeradiusを入れる

LinuxではRadiusを実現するためにfreeradiusが用意されています。 

$ sudo apt-get install freeradius
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
linux-headers-4.15.0-22 linux-headers-4.15.0-22-lowlatency linux-image-4.15.0-22-lowlatency
linux-modules-4.15.0-22-lowlatency
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
freeradius-common freeradius-config freeradius-utils freetds-common libct4 libdbi-perl
libfreeradius3
提案パッケージ:
freeradius-ldap freeradius-postgresql freeradius-mysql freeradius-krb5 snmp libmldbm-perl
libnet-daemon-perl libsql-statement-perl
以下のパッケージが新たにインストールされます:
freeradius freeradius-common freeradius-config freeradius-utils freetds-common libct4 libdbi-perl
libfreeradius3
アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 2 個。

/etc/freeradius/3.0/というフォルダが作られ、設定ファイル諸々が入っていました。

  • NASの設定は、/etc/freeradius/3.0/clients.conf
  • ユーザーの設定は、/etc/freeradius/3.0/users

でできます。この2つのファイルに設定をいれるだけでRadiusとして動きそうです。


/etc/freeradius/3.0/clients.conf

#
# You can now specify one secret for a network of clients.
# When a client request comes in, the BEST match is chosen.
# i.e. The entry from the smallest possible network.
#
#client private-network-1 {
# ipaddr = 192.0.2.0/24
# secret = testing123-1
#}
#client private-network-2 {
# ipaddr = 198.51.100.0/24
# secret = testing123-2
#}


ここでipaddr(スイッチのIPアドレス)とsecretというパスワードを設定します。NAS側でも、radiusサーバーのipと同じsecretパスワードを設定してあげてください。


/etc/freeradius/3.0/users

#
# This is an entry for a user with a space in their name.
# Note the double quotes surrounding the name. If you have
# users with spaces in their names, you must also change
# the "filter_username" policy to allow spaces.
#
# See raddb/policy.d/filter, filter_username {} section.
#
#"John Doe" Cleartext-Password := "hello"
# Reply-Message = "Hello, %{User-Name}"


ユーザーの設定でもCleartext-Passwordというパスワードを設定します。このパスワードが何になるかもNASで設定します。ユーザーのMACアドレスがデフォルトになっているかも。

 

yumとrpm

 

yum

Yellowdog Updater Modified (Yum ヤム)はLinuxRPM Package Managerのパッケージを管理するメタパッケージ管理システムである。(wikipediaより)

 yumコマンドはLinuxのパッケージをインストールするときに使いますよね。こんな感じで。

 yum install -y httpd 

メタパッケージ管理システムといっているのは、rpmと互換性があり、rpmインストール時の依存関係もすべて全部正して更新してくれるから。

ではrpmとは?

 

 

rpm

RPM(アールピーエム、RPM Package Manager)はレッドハット社が開発したソフトウェアのパッケージを管理するためのシステム (パッケージ管理システム)、及びコマンド。(wikipediaより)

Linuxディストリビューションで使われるソフトウェアは拡張子が.rpmです。これはバイナリファイルです。

rpmコマンドでインストールしたり更新したりできますが、yumと違ってその他との依存関係まで解決してくれないので注意。