局域网无网络服务器联网解决方案
局域网无网络服务器联网解决方案
1. X11转发ubuntu服务器火狐浏览器
这是我之前一直在用的方案,x11
转发也比较好实现,缺点主要有:
- 界面很卡,浏览器登录校园网很费劲
- 配置麻烦,需要一个
xming
或者xQuartz
插件 - 对于校园网(我们校园网一个账号只能登陆两台设备)来说,这样就需要占用一个账号了。
2. 通过本机代理服务器网络
我们的笔记本电脑如果是与服务器在一个局域网的话,是可以通过将我们的笔记本作为代理服务器的,让linux服务器走笔记本的网络,这样不仅不会占用校园网账号,还非常现代化😄
Mac 系统
SquidMan
是一款Mac
上的图形化的squid
代理服务器的安装管理工具。使用squid
服务器软件可以帮助我们实现如下功能
- 缓存下载内容,减少网络带宽,加速网页浏览。
- 作为代理服务器,供其他设备使用。
这里我们用到的是其代理功能。
下载地址:SquidMan | Tagline wanted, apply within.
1. 查看笔记本的IP地址,同时检验是否能够与局域网内linux
互相ping通。
-
对于mac系统可以利用网络设置查看,也可以使用ifconfig查看IP地址:
-
对于
linux
,使用ifconfig
查看ip
: -
然后在mac 终端ping一下linux的ip,在linux ssh终端ping一下笔记本的ip地址,如果是处于同一个局域网的话,应该是可以ping通的。
2. 打开SquidMan软件,设置端口
这里我将端口设置为8089,只要没有占用即可。
在clients中将linux服务器ip写入
然后在Template中将这些deny都设置为allow,这里应该不怕什么危险,不用的时候关闭软件即可。
设置好之后重启软件即可。
3. 设置linux代理
在自己用户下设置bashrc
vim ~./bashrc
在bashrc文件最后添加:
然后执行source ~/.bashrc
,不出问题,应该就可以联网了
windows系统
window系统与mac类似,只不过代理软件不同而已。
- 下载
CCProxy
软件,
- 打开软件,设置查看本机ip
-
linux
ssh
终端ping
一下,看是否能够ping
通,如果ping
不通的话需要关闭windows
的防火墙设置: -
ping
通之后,就可以在linux
设置代理了,这里详细说一下设置代理的三种方式-
通过命令
export
临时设置代理变量,此方法只对开着的这个终端起作用,临时用一下可以export http_proxy="http://10.9.16.20:808"
export https_proxy="http://10.9.16.20:808"
//取消
unset http_proxy
unset https_proxy
-
通过修改用户文件
~/.bashrc
文件,此文件只对你这个用户管用,推荐用这种,设置方式同上面mac的设置方式 -
修改系统文件,如果你想让这个机器的所有用户都走你这个代理,可以修改系统配置文件,
/etc/profile
内容就是一样的,写入代理变量
-
-
设置完毕后,
linux
应该就可以通网了,这个时候可以打开CCProxy
的监控,看是否走流量:
3. 通过终端脚本直接连校园网
第三个方法就是想着,能够通过ssh连入服务器之后终端直接模拟浏览器,填入校园网账号密码进行登录。
之所以把这个放在第三,是因为运行这个需要pyhton
环境,没有网络的话搭建python
环境好麻烦,还需要一些浏览器内核安装,所以可以先通过第二种方法搭建起环境,然后使用第三个方法。
那既然有了第二种方法,为什么还需要第三种方法:
有一个非常重要的应用场景,就是需要服务器一直保持联网状态,比如我们放寒假。但是校园网连接又不大稳定,这样就可以设定一个定时任务,让服务器不间断自动联网。
qust联网脚本
这里选择python
的selenium
库进行这个工作,配合katalon Recorder
插件,很轻松能够写出这个python
脚本。
下面介绍一下它的执行步骤:
在 linux
中的配置和 windows
的配置步骤一样,下面简单介绍一下。
安装 Selenum
库
使用下面的命令安装 selenium
库:
pip install selenium==3.14.0
安装 firefox 浏览器
firefox 下载地址:www.firefox.com.cn/download/
使用如下命令下载 linux
版本的 firefox
浏览器:
wget https://download-ssl.firefox.com.cn/releases/firefox/esr/91.0/zh-CN/Firefox-latest-x86_64.tar.bz2
下载完成后使用下面的命令解压得到 Firefox-latest-x86_64.tar
:
bunzip2 -d Firefox-latest-x86_64.tar.bz2
再次使用下面的命令解压:
tar -xvf Firefox-latest-x86_64.tar
安装 firefox 浏览器驱动
geckodriver 驱动下载地址:github.com/mozilla/gec…
使用下面的命令下载 linux 系统的驱动:
wget https://github.com/mozilla/geckodriver/releases/download/v0.29.1/geckodriver-v0.29.1-linux64.tar.gz
解压 geckodriver
tar -zxvf geckodriver-v0.29.1-linux64.tar.gz
Python脚本
from selenium import webdriver
from subprocess import run
class Qust(object):
def __init__(self) -> None:
super().__init__()
self.firefox_options = webdriver.FirefoxOptions()
# 使用headless无界面浏览器模式
self.firefox_options.add_argument('--headless') # 增加无界面选项
self.firefox_options.add_argument('--disable-gpu') # 如果不加这个选项,有时定位会出现问题
self.executable_path = r"/home/qust-001/Chenjq/qust_login/FireFoxDrive/geckodriver"
self.firefox_binary=r"/home/qust-001/Chenjq/qust_login/FireFox/firefox/firefox"
def Login(self):
# 打开firefox浏览器
driver = webdriver.Firefox(
executable_path=self.executable_path,
firefox_binary=self.firefox_binary,
options=self.firefox_options)
url = "http://www.qust.edu.cn/" # 登录网址
Name = "2019090015" # 账号a
Password = "186561" # 密码
try:
# 访问网址
driver.get(url)
driver.implicitly_wait(2) # 隐性等待,最长等20秒
# 输入账号
driver.find_element_by_id("username").clear()
driver.find_element_by_id("username").send_keys(Name)
driver.find_element_by_xpath("//tr[@id='countTrId']/td").click()
driver.find_element_by_id("pwd_hk_posi").click()
driver.find_element_by_id("pwd").clear()
driver.find_element_by_id("pwd").send_keys(Password)
driver.find_element_by_xpath("//tr[@id='countTrId']/td").click()
driver.find_element_by_id("selectDisname").click()
driver.find_element_by_id("_service_0").click()
driver.find_element_by_xpath("//a[@id='jizhummNo']/div").click()
driver.find_element_by_xpath("//a[@id='jizhummYes']/div").click()
driver.find_element_by_id("loginLink_div").click()
print("登陆成功")
except Exception as e:
print("登陆失败", e)
finally:
driver.quit()
def Logout(self):
# 打开firefox浏览器
driver = webdriver.Firefox(
executable_path=self.executable_path,
firefox_binary=self.firefox_binary,
options=self.firefox_options)
try:
driver.get("http://211.87.158.84/")
driver.find_element_by_id("toLogOut").click()
alert = driver.switch_to.alert
alert.accept()
print("退出账号成功")
except Exception as e:
print("退出账号失败",e)
finally:
driver.quit
if __name__ == "__main__":
qust = Qust()
qust.Login()
qust.Logout()
我这里没有做太全的错误排除,我自己测试是没有问题的。