Skip to content

Instantly share code, notes, and snippets.

@Youngv
Last active December 28, 2015 07:09
Show Gist options
  • Save Youngv/7461808 to your computer and use it in GitHub Desktop.
Save Youngv/7461808 to your computer and use it in GitHub Desktop.
这是一个实现在命令行登录和注销校园网的小脚本。
# encoding = utf-8
require 'mechanize'
class Internet
# 定义自动登录的地址
@@url = 'http://192.168.31.4:8080'
#初始化,生成一个Mechanize对象
def initialize
@agent = Mechanize.new
end
# 获取当前页面的表单
def get_form
@page = @agent.get(@@url)
@current_form = @page.form('AuthenticateForm')
end
# 登录
def login
get_form
if @current_form.submit_button?('Submit') # 如果有登录按钮,就执行登录动作,否则提示已经登录
@login_form = @current_form
@login_form.AuthenticateUser = $USERNAME
@login_form.AuthenticatePassword = $PASSWORD
@logout_form = @agent.submit(@login_form).form('AuthenticateForm')
if @logout_form.submit_button?('Logout') # 如果登录成功,就显示成功提示,否则重复登录动作
puts "Login Success."
else
login
end
else
puts "You have already login!"
end
end
#注销
def logout
get_form
if @current_form.submit_button?('Logout') # 如果有注销按钮,就执行注销动作,否则提示还没登录
@logout_form = @current_form
@login_form = @agent.submit(@logout_form, @logout_form.buttons.first).form('AuthenticateForm')
if @login_form.submit_button?('Submit') # 如果注销成功,就显示成功提示,否则重复注销动作
puts "Logout Success."
else
logout
end
else
puts "You haven't login yet!"
end
end
# 查询流量
def check_bytes
get_form
if @current_form.submit_button?('Logout') # 如果有注销按钮,就执行查询动作,否则提示还没登录
used_bytes = @page.search("#ub").text.gsub(/,/,"").to_i # 搜索页面中的元素,找到id为"#ub"的元素
puts "---------------"
puts "Used: #{used_bytes/1024/1024 + 1}MB" # 把 byte 转成 MB
total_bytes = @page.search("#tb").text.gsub(/,/,"").to_i
left_bytes = total_bytes - used_bytes
puts "Left: #{left_bytes/1024/1024}MB"
puts "---------------"
else
puts "You haven't login yet!"
end
end
end
stu = Internet.new
stu.login #登录
stu.check_bytes #查询流量
stu.logout #注销
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment