Skip to content

Instantly share code, notes, and snippets.

@yswallow
Created December 6, 2015 15:09
Show Gist options
  • Select an option

  • Save yswallow/9edfe292430aa4ef96a9 to your computer and use it in GitHub Desktop.

Select an option

Save yswallow/9edfe292430aa4ef96a9 to your computer and use it in GitHub Desktop.
NetworkManagerでネットワーク接続時に認証する
#! /bin/sh
# in /etc/NetworkManager/dispatcher.d
ruby2.0 /home/user/ruby/PATH/utlan-auth.rb > /tmp/nw-utlan-login

ネットワーク接続時に自動で認証するやつ

how to use

  • ruby2.0をインストール(apt-get install ruby2.0)
  • utlan-auth.rbutid13,passwordを適切に変更
  • 02ifuputlan-auth.rbのへのpathを適切に変更
  • 02ifup/etc/NetworkManager/dispatcher.d以下に置く
  • chmod +x 02ifup
  • アクセスポイントからログアウトしてからネットワークに再接続して/tmp/nw-utlan-loginに認証に成功した旨が載っていれば成功

インストール時にエラーが出る

  • 大体のに管理者権限が必要だから注意してね

ネットワーク切断時にも実行されているぞ!!

  • 面倒だから対応しなかった。許して。
# coding: UTF-8
require 'net/https'
require 'uri'
require 'open-uri'
utid13 = '学生証裏の13桁の番号'
password = '統一認証のパスワード'
url = nil
data = nil
open('http://www.google.co.jp') do |io|
if io.base_uri.host == 'www.cc.tsukuba.ac.jp'
# 宿舎で未認証
puts '宿舎LAN'
url = 'https://webauth03.cc.tsukuba.ac.jp:8443/cgi-bin/adeflogin.cgi'
data = {'name' => utid13, 'pass' => password }
elsif io.meta['location']
# utwlanで未認証
puts '学内無線LAN'
url = "https://wlan-auth1.cc.tsukuba.ac.jp/login.html"
data = { "buttonClicked" => "4",
"err_flag" => "0",
"username" => utid13,
"password" => password }
else
puts 'Login is not needed'
exit
end
end
form_data = data.to_a.map { |i| i.join("=") }.join("&")
uri = URI.parse(url)
https = Net::HTTP.new uri.host, uri.port
https.use_ssl = true
https.start {
res = https.post uri.path, form_data
res.body.scan(/Login.+?</) do |match|
puts match.chop
end
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment