本博主为高龄在校生,实验室服务器需要假期时候无人守候也能实现自动登录校园网从而实现网络连接,以使实验室同学在家也可以使用校园vpn连接服务器。

由于假期时候实验室没有人,而假期实验室可能会出现断电断网问题(假期一般需要定期检修校园的电力和网络),虽然服务器设置了来电自启动但是网络连接却是不好解决的问题,因此给出了下面的自己设计的解决方案。

首先,给出校园网网络自连接的程序(自动登录校园网):

参看:  https://www.cnblogs.com/devilmaycry812839668/p/14201947.html

东北某海滨城市的某高校的某分校区的校园网登录程序,(python3, 模拟浏览器的登入方式)

已经写好的代码:(python3)

#encoding:UTF-8
from urllib.parse import urlencode
from urllib.request import urlopen
import urllib
import os
import sys
import getpass if __name__ == "__main__":
#username=input("please input your username\nUsername: ")
#print "please input your password"
#password=getpass.getpass()
username = "123456"
password = "123456" opener=urllib.request.build_opener(urllib.request.HTTPRedirectHandler(), urllib.request.HTTPHandler(debuglevel=0))
opener.addheaders=[('User-agent', "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)")]
url='http://172.20.20.1:801/srun_portal_pc.php?ac_id=3&' try:
response=opener.open(url, urlencode({"ac_id":"3", "action":"login", "nas_ip":"", "password":password, "save_me":"1", "url":"", "user_ip":"", "user_mac":"", "username":username }).encode("utf-8")) xxx_print = response.read().decode("utf-8") if xxx_print.find(u'网络已连接') != -1:
print( '\n\n\n' )
print( '##################################' )
print( '您已经成功登录' )
print( '##################################' )
print( '\n\n\n' )
else:
print( '\n\n\n' )
print( '##################################' )
print( '抱歉,您登录失败' )
print( '##################################' )
print( '\n\n\n' )
print( xxx_print )
except Exception as e:
print( '\n\n\n' )
print( '##################################' )
print( "网络联通有误, 请检测网络是否可达" )
print( '##################################' )
print( e )

修改用户名和密码即可以用。

打印服务器网络配置:

ifconfig

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ab:11:7b:44 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.105.219.170 netmask 255.255.0.0 broadcast 10.105.255.255
inet6 fe80::2e4d:54ff:fe44:a14b prefixlen 64 scopeid 0x20<link>
inet6 2001:da8:a800:af00:2e4d:54ff:fe44:a14b prefixlen 64 scopeid 0x0<global>
ether 2c:4d:54:44:a1:4b txqueuelen 1000 (Ethernet)
RX packets 117350 bytes 10936594 (10.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1222 bytes 122427 (122.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xc6400000-c647ffff enp8s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.11.66 netmask 255.255.255.0 broadcast 192.168.11.255
inet6 fe80::2e4d:54ff:fe44:a14c prefixlen 64 scopeid 0x20<link>
inet6 2001:da8:a800:af00:2e4d:54ff:fe44:a14c prefixlen 64 scopeid 0x0<global>
ether 2c:4d:54:44:a1:4c txqueuelen 1000 (Ethernet)
RX packets 115510 bytes 10489267 (10.4 MB)
RX errors 910 dropped 0 overruns 0 frame 736
TX packets 392 bytes 40113 (40.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xc6300000-c637ffff lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 349 bytes 28888 (28.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 349 bytes 28888 (28.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

可以看到服务器有两个网卡,由于是Ubuntu18.04server 系统,参看服务器的网络配置:

vim /etc/netplan/50-cloud-init.yaml

# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
enp7s0:
dhcp4: true
nameservers:
addresses:
- 202.118.66.6
search: []
optional: true enp8s0:
addresses:
- 192.168.11.66/24
gateway4: 192.168.11.254
nameservers:
addresses:
- 202.118.66.6
search: []
optional: true version: 2

可以看到服务器是两个网卡,一个是动态ip的,一个是静态ip的,其中由于实验室路由器损坏导致静态ip无法联网只能使用动态ip联网,因此服务器开机时需要设置路由使服务器的网关为使用动态ip的网卡(不然系统会默认使用静态ip网卡对应的网关作为默认网关,导致无法联网),这个无法联网的静态ip对应的网卡主要用于连接内网打印机等设备。

因此,这里我们需要实现的功能就是服务器开机自动设置路由,然后自动启动网络登录程序。

这里的解决方案是写一个自启动的脚本,把网络路由设置和自启动登录脚本的设置写入进去:

自启动脚本编写方式参考:

/etc/init.d 开机自动执行脚本

编辑自启动脚本:

sudo vim /etc/init.d/keep_alive

#! /bin/sh

### BEGIN INIT INFO
# Provides: sshd
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: OpenBSD Secure Shell server
### END INIT INFO route del default gw 192.168.11.254 nohup python3 /home/xxxxxx/keep_alive.py 1>/tmp/network_login.log 2>&1 & exit 0

其中:

route del default gw 192.168.11.254   是删除掉静态ip的网关,这样所有访问都可以通过动态ip的网卡出去,而且不影响使用静态ip网卡来访问局域网的打印机。

nohup python3 /home/xxxxxx/keep_alive.py 1>/tmp/network_login.log 2>&1 &      该语句是设置网络登录脚本启动后把输出打印到日志中
 

编写好  /etc/init.d/  下面的  keep_alive  自启动脚本后还需要给其执行权限并更新到系统中:

赋给执行权限:

sudo chmod a+x /etc/init.d/keep_alive

更新到系统中:

sudo update-rc.d  keep_alive defaults 90

从系统中移除:

sudo update-rc.d -f  keep_alive remove

配置结束。

PS:

有的时候还需要额外执行命令:systemctl  enable keep_alive   才可以实现自启动服务。

=================================================

重启电脑可以成功设定路由并自动登录校园网。

Ubuntu18.04server 双网卡,开机自动设置路由并启动校园网网络认证程序(Ubuntu开机自动设置路由,开机自启动应用程序)的更多相关文章

  1. VirtualBox中使用双网卡实现CentOS既能上网(校园网)也能使用SSHclient

    近期在虚拟机中使用linux操作系统,之前使用NAT方式上网,能够畅通无阻.可是使用SSHclient连接linux虚拟机就必须为其指定固定的IP地址.依照网上的配置方法使用桥接方式,这种方式是能够的 ...

  2. windows server 2012 双网卡配置

    别用route 命令!!!!!! 在使用最新版的windows server 2012的时候,当存在两个或者多个网段的时候,就可以采用双网卡的方式来添加和配置路由.具体的设置方法如下: 网段1  19 ...

  3. Ubuntu 16.04设置rc.local开机启动命令/脚本的方法

    Ubuntu 16.04设置rc.local开机启动命令/脚本的方法       Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启 ...

  4. 转:CentOS 7使用nmcli配置双网卡聚合LACP

    进入CentOS 7以后,网络方面变化比较大,例如eth0不见了,ifconfig不见了,其原因是网络服务全部都由NetworkManager管理了,下面记录下今天下午用nmcli配置的网卡聚合,网络 ...

  5. CentOS 7使用nmcli配置双网卡聚合

    进入CentOS 7以后,网络方面变化比较大,例如eth0不见了,ifconfig不见了,其原因是网络服务全部都由NetworkManager管理了,下面记录下今天下午用nmcli配置的网卡聚合,网络 ...

  6. 华硕笔记本怎么设置u盘启动(两种方法)

    华硕笔记本怎么设置u盘启动(两种方法) 华硕笔记本怎么设置u盘启动.我想用U盘安装系统但是 我不知道如何设置U盘启动,那么该如何设置呢?下面和大家分享一下我的经验,希望能够帮到大家.如果你的系统是预装 ...

  7. U盘装系统系列二—-如何设置U盘启动

    老毛桃U盘启动制作好之后,如何设置U盘启动呢?我的是华硕的电脑,开机后按F2进入BIOS设置(不同主板可能不一样,比如有的是按向下键或者Del键,可以在网上查下看看),按Tab键选中Boot:按向下键 ...

  8. WebStrom配置多个项目的Dweployment时,设置默认的启动配置

    有时候,我们在WebStrom中打开多个项目,但是每个项目可能的Deployment的配置不同,所以每次在项目中时,可能打开的网页并不对.所以需要设置默认的启动的Deployment.下面的内容是设置 ...

  9. web服务器 双网卡 路由 设置

    最近在装服务器的时候,遇到一个问题,就是这个服务器本身是一个web服务器,但它上面装有一个局域网数据交换软件,还需要访局域网. 但软件装上去了,局域网怎么也不能访问,后来了解到是因为双网卡的原因,需要 ...

  10. win7双网卡走哪个网卡路由设置

    有没有软件能做这个我还真不知道.说说我的做法吧: 单位里无线是可以访问Internet的,有线是用来访问公司内部系统的. 默认的54M无线网络和100M的有线网络,系统在选择默认路由的时候肯定是选择有 ...

随机推荐

  1. 华擎B365M ITX ,SSD WIN7 电脑卡顿,4K异常,9代 I7

    华擎B365M ITX ,SSD WIN7 电脑卡顿,4K异常,9代 I7 故障现象: 新装的电脑,WIN7 电脑卡顿. 表现:我的电脑打开很慢,延时个1-3秒左右.任务管理器打开很慢,N秒. 换了块 ...

  2. 项目管理--PMBOK 读书笔记(9)【项目资源管理】

    1.团队成员的角色与职责: 1)层级结构(OBS):与 WBS 交叉确认部门的全部项目指责,项目组织结构图: 2)矩阵结构(RAM):工作包(活动)与项目团队的关系,主要用于明确角色与期望(职责) 3 ...

  3. js中字符串的方法,17种方法

    字符串的17种方法...... 1.length:返回字符串的长度. const str = "Hello, World!"; console.log(str.length); / ...

  4. 前端使用 Konva 实现可视化设计器(15)- 自定义连接点、连接优化

    前面,本示例实现了折线连接线,简述了实现的思路和原理,也已知了一些缺陷.本章将处理一些缺陷的同时,实现支持连接点的自定义,一个节点可以定义多个连接点,最终可以满足类似图元接线的效果. 请大家动动小手, ...

  5. 【长文】带你搞明白Redis

    本文使用第一人称来介绍Redis 一.概述 Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化 ...

  6. 关于java-Class类的简单分析

    java有个Class的基类,高级编程的时候,务必要理解这个. 粗略看下,可以明白了解Class这个类对于了解和掌握java非常重要. Class这个类的包路径是:java.lang.Class< ...

  7. 继续我们的复习之路——webapi

    前面断更几天是因为在住安心复习DOM BOM的内容 不得不说 还得是DOM 在这一章节的复习内容中  涌现出了很多又代表意义 经典的一些小案例 而且 还是有些难度的 有一两个我反正是自己独立完成不了 ...

  8. 【ClickHouse】0:clickhouse学习2之数据类型

    一 :如何查看clickhouse具体支持哪些数据类型? 1:查看官方文档:https://clickhouse.tech/docs/en/sql-reference/data-types/ 2:查看 ...

  9. debian12 安装ch343驱动

    前言 最近心血来潮,装了一台debian12玩,安装完毕arduino后发现没有ch343驱动,倒是在 ls /lib/modules/6.1.0-13-amd64/kernel/drivers/us ...

  10. 洛谷P5020

    水一道绿题... #include<iostream> #include<utility> #include<algorithm> using namespace ...