Linux 启动!

0 前言

最近心血来潮,想学习(玩玩)linux,但又得了一种一用虚拟机就会死的病(),于是在咸鱼上精挑细选,九十五入手了个Z8350(2+32)的微主机(原为新华三云课堂),来当做学习用的服务器。如图:

自带win10,简单跑了个分,惨不忍睹…

以下简单记录刷系统和配置的过程:

1 刷系统

  • 由于内存限制,选择使用非桌面系统,Ubuntu server ,下载镜像:ubuntu-22.04.4-live-server-amd64.iso。
  • 准备好U盘,使用rufus刷入镜像。
  • 由于手头没有显示器,使用HDMI转USB采集卡连接我的笔记本,并使用OBS来当做临时显示器。
  • delete键进入BIOS,选择U盘启动。
  • 按照【系统篇】安装Ubuntu Server 20.04_哔哩哔哩_bilibili视频操作,完成系统安装。
    • 注意:更换阿里云源,下载SSH。
  • 创建用户名、设置密码…

2 配置:

2.1:电脑连接服务器:

原来专门挑选了带wifi的主板,想通过wifi接入校园网。但是到手后发现所谓带wifi是卖家魔改的长达3cm导线的“天线”,根部收不到寝室里的wifi,而且那个华为的AP上虽然留了网线接口,但是不能用。。。

然而,天无绝人之路,我偶然找到了隐藏在桌子下的网络接口,便立即购买了网线,连接后发现可以使用。

此处使用MobaXterm通过SSH连接到服务器(这个工具SSH连接后就可以通过SFTP直接上传下载文件,爽歪歪)。

2.2:连接公网:

更新/下载软件需要连接公网。

由于在学校使用的校园网要在引导页面经过账号认证才能连接到公网,而命令行显然并不能操作。打算使用脚本发送连接请求包的方法实现服务器与公网的连接。

通过Fiddler(浏览器F12保留日志也可以)抓包,抓取到四个GET包。其中如下URL中含有login的为登陆认证请求的包。

由于是GET请求,要写一个连接认证请求包,账号密码等信息直接在URL中获取。只做登陆,所以只要它的请求标头而无需相应标头。但是URL中的IP地址、MAC、cookie需要动态获取。

可以得到:

http://10.1.1.10:801/eportal/portal/custom/auth?callback=dr1004&login_method=1&user_account=yz0EF手动马赛克&user_password=a6ten手动马赛克y%3D&wlan_user_ip=172.2手动马赛克.174&wlan_user_ipv6=&wlan_user_mac=00000手动马赛克0000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.1.3&terminal_type=1&type=1&lang=zh-cn&v=1876&lang=zh

知道这两个信息,借助GPT编写SHELL脚本(之后再慢慢学…)如下:

#!/bin/bash

# 获取本机IP地址
wlan_user_ip=$(hostname -I | awk '{print $1}')

# 获取本机MAC地址
wlan_user_mac=$(cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address)

# URL中的参数
user_account="//账号编码"
user_password="//密码编码"
login_method="1"
callback="dr1004"
jsVersion="4.1.3"
terminal_type="1"
lang="zh-cn"
v="7844"

# 初始URL,用于获取Cookie
initial_url="http://10.1.1.10:801/eportal"

# 获取PHPSESSID
php_sessid=$(curl -s -I "${initial_url}" | grep 'Set-Cookie: PHPSESSID=' | awk -F'=' '{print $2}' | awk -F';' '{print $1}')

# 构造认证URL
auth_url="http://10.1.1.10:801/eportal/portal/custom/auth?callback=${callback}&login_method=${login_method}&user_account=${user_account}&user_password=${user_password}&wlan_user_ip=${wlan_user_ip}&wlan_user_ipv6=&wlan_user_mac=${wlan_user_mac}&wlan_ac_ip=&wlan_ac_name=&jsVersion=${jsVersion}&terminal_type=${terminal_type}&type=1&lang=${lang}&v=${v}"

# 请求标头
header=(
  "Accept: */*"
  "Accept-Encoding: gzip, deflate"
  "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"
  "Connection: keep-alive"
  "Cookie: PHPSESSID=${php_sessid}"
  "Host: 10.1.1.10:801"
  "Referer: http://10.1.1.10/"
  "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Edg/100.0.1185.50"
)

# 使用curl发送POST请求,并捕获HTTP状态码
response=$(curl -s -o /dev/null -w "%{http_code}" -X POST "${auth_url}" -H "${header[@]}")

# 确保只获取到正确的HTTP状态码(取前三位)
response_code=$(echo "$response" | cut -c 1-3)

# 检查响应状态码是否为三位数的数字
if [[ "$response_code" =~ ^[0-9]{3}$ ]]; then
  if [ "$response_code" -eq 200 ]; then
    echo "你已成功登录校园网"
  else
    echo "登录失败,状态码:$response_code"
  fi
else
  echo "无法获取有效的HTTP状态码:$response_code"
fi

之后通过MobaXterm上传到服务器,注意WINDOWS上编写的脚本中的“/r”与LINUX中的不一样,需要处理。

然后通过相关命令基于操作权限,并使用脚本。

提示登陆成功。使用 curl -I http://www.baidu.com 测试:


说明已经连接到公网。

但是ping www.baidu.com并不成功,不知道为什么。

ping www.cmd137blog.top却可以。

至此,Linux服务器的搭建和简单配置已完成。此时我在图书馆写博客时,SSH连接到这台linux(在寝室)也没问题。

更新脚本

一段时间没有用,发现怎么也连接不上校园网(指登录账号),后发现学习在后面要求加强密码强度,且解析方法更新,于是再次抓包,更新脚本中的url参数;后正常工作。

自定义命令

执行

sudo touch /usr/local/bin/bjfunet
sudo chmod +x /usr/local/bin/bjfunet

编辑脚本:

#!/bin/bash
bash /home/dxc/temp/bjfunet.sh

后,即可在全局使用 bjfunet 命令来连接校园网。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇