1.前言

之前买了一个工控机,装过几个OS(linux 发行版),但是一直没有细研究过流程,只是停留在能用就不管了,工控机自带无线网卡(和俩个有线网口),所以这篇文章好好介绍如何开机自动连接WIFI(无图形化界面)。

2.安装软件

首先系统我安装的是 ubuntu 18.04 server版 ,安装过程不必赘述。

要连接家里的wifi,首先要知道家里wifi的加密模式,是否为WEP模式。

无密码/WEP模式可直接使用以下命令连接:

sudo iw dev wlan0 connect [网络 SSID]
sudo iw dev wlan0 connect [网络 SSID] key 0:[WEP 密钥]

如果是WPA 或WPA2 需要安装 wpasupplicant 软件包

sudo apt install wpasupplicant

3.生成配置文件

sudo wpa_passphrase [网络SSID] [KEY秘钥] > /etc/wpa_supplicant.conf

4.连接WIFI

wpa_supplicant -s -i wlp3s0 -D nl80211,wext -c /etc/wpa_supplicant.conf

看到很多文章说 加 & 放到后台执行,其实 wpa_supplicant -B 参数就是放到后台去执行。

动态获取ip地址:

dhclinet

验证是否可以连接网络:

curl www.baidu.com

4.开机自动连接WIFI

修改 /etc/network/interfaces 文件:

# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
# sudo apt install ifupdown
auto wlp3s0
iface wlp3s0 inet dhcp
wpa-conf /etc/wpa_supplicant.conf

可以看到这个配置文件前面说明了ifupdown 工具已经被 netplan 替换掉了,如果使用 ifupdown 这个工具就需要安装一下:

sudo apt install ifupdown

ifupifdown 命令会读取 /etc/network/interfaces 进行设置:

ifup wlp3s0 #启用wlp3s0 并连接wifi
ifdown wlp3s0 #关闭wlp3s0

ifupifdown 命令也是通过服务来控制的:(/etc/systemd/system/network-online.target.wants/networking.service)

[Unit]
Description=Raise network interfaces
Documentation=man:interfaces(5)
DefaultDependencies=no
Wants=network.target
After=local-fs.target network-pre.target apparmor.service systemd-sysctl.service systemd-modules-load.service
Before=network.target shutdown.target network-online.target
Conflicts=shutdown.target [Install]
WantedBy=multi-user.target
WantedBy=network-online.target [Service]
Type=oneshot
EnvironmentFile=-/etc/default/networking
ExecStartPre=-/bin/sh -c '[ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle'
ExecStart=/sbin/ifup -a --read-environment
ExecStop=/sbin/ifdown -a --read-environment --exclude=lo
RemainAfterExit=true
TimeoutStartSec=5min

networking 这个服务是开机自启服务,每次开机就会执行 /sbin/ifup -a --read-environment ,从而连接wifi。

5. 其它问题

A start job is running for wait for network to be Configured 开机卡住2分钟左右。

很多文章也说过,修改/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service

#  SPDX-License-Identifier: LGPL-2.1+
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version. [Unit]
Description=Wait for Network to be Configured
Documentation=man:systemd-networkd-wait-online.service(8)
DefaultDependencies=no
Conflicts=shutdown.target
Requires=systemd-networkd.service
After=systemd-networkd.service
Before=network-online.target shutdown.target [Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes
TimeoutStartSec=2sec #其它文章加入的 [Install]
WantedBy=network-online.target

简单来说 systemd-networkd-wait-online 这个服务可以检查所有网络接口网络是否处于就绪状态,如果没就绪就会阻塞住,但是直接设置服务的 timeout时间并不是好的做法。

我们简单执行一下 /lib/systemd/systemd-networkd-wait-online 这个命令:

root@ubuntu:~# /lib/systemd/systemd-networkd-wait-online --help
systemd-networkd-wait-online [OPTIONS...] Block until network is configured. -h --help Show this help
--version Print version string
-q --quiet Do not show status information
-i --interface=INTERFACE Block until at least these interfaces have appeared
--ignore=INTERFACE Don't take these interfaces into account
--timeout=SECS Maximum time to wait for network connectivity
root@ubuntu:~#

可以看到,这个命令是可以带有一些参数的,-i 判断指定的网络接口,不必判断所有的网络接口,所以这地方我只有指定我连接wifi的网络接口就合理了:

ExecStart=/lib/systemd/systemd-networkd-wait-online -i wlp3s0

linux server设置开机自动连接WIFI的更多相关文章

  1. redhat设置开机自动连接网络

    一.设置开机自动连接网络1.用root账号登录2.打开etcsysconfignetwork-scrpts目录3.vi ifcfg-eth04.将ONBOOT改为yes 二.没有图形界面如何连接网络1 ...

  2. Linux 使用wpa_supplicant手动配置连接wifi

    Linux 使用wpa_supplicant手动配置连接wifi wpa_supplicant 简介 wpa_supplicant是Linux BSD, Mac OSX和Windows的WPA的服务, ...

  3. Linux Redis自动启动,Redis开机启动,Linux Redis设置开机启动

    Linux Redis自动启动,Redis开机启动,Linux Redis设置开机启动 >>>>>>>>>>>>>> ...

  4. Windows 设置开机自动登录

    1. 自己一些windows的虚拟机 有时候开机之后 输入用户名密码时间特别长. 需要等待很久, 如果能够设置开机自动登录的话 能够节约很多时间. 2. 最简单的办法  运行输入 control us ...

  5. Linux上设置开机启动Java程序

    在Linux上设置开机启动Java程序,例如:test.jar 在Linux上启动Java程序的命令: nohup java -jar test.jar >/dev/>& & ...

  6. Win10如何设置开机自动登录

    原文:Win10如何设置开机自动登录 第一步: 小娜搜索"netplwiz",进入用户账户设置. 第二步: 先勾选选中一次,要使用本计算机,用户必须输入用户名和密码. 第三步: 取 ...

  7. 怎样启动Nginx并设置开机自动运行

    1. 启动 sudo systemctl start nginx.service 2. 设置开机自动运行 sudo systemctl enable nginx.service

  8. vlc播放器设置开机自动全屏播放网络视频流

    因工作需要,要用vlc视频播放器实现开机自动全屏播放某个网络视频流.百度了下,说的都很模糊,经过整理,设置方法如下: 一,添加视频流地址:rtsp://wowzaec2demo.streamlock. ...

  9. Linux、UNIX设置开机自动运行命令、脚本配置

    一般我们不建议人工部署开机自动启动的脚本.而是建议通过crontab 部署脚本监控,理由如下: 1.自动开机部署脚本不好定位问题,有可能导致主机重启过慢. 2.自动开机部署脚本不好定位问题,有可能导致 ...

  10. Linux系统如何设置开机自动运行脚本?

    大家好,我是良许. 在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务.在 Windows 下,我们有很多方法可以设置开机启动,但在 Linux 系统下我们需要如何操作呢? Li ...

随机推荐

  1. Mysql 实现 向上递归查找父节点并返回树结构

    需求:通过mysql 8.0以下版本实现,一个人多角色id,一个角色对应某个节点menu_id,根节点的父节点存储为NULL, 向上递归查找父节点并返回树结构. 如果只有叶子,剔除掉; 如果只有根,只 ...

  2. 使用Steamwork.Net 接入Steam一点心得

    1.  前言 这是我在开发过程中使用的一点总结,目前使用的东西包含基础登录功能,存档功能,成就系统,以及DLC安装功能.Steamwork不仅仅有这些功能还有游戏内交易,排行榜,数据传输等功能,这些功 ...

  3. 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化

    前文目录链接参考: 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化 https://www.cnblogs.com/yizhiamumu/p/16694126.html 消息队列 ...

  4. ProxySQL Disk库和Stats库

    转载自:https://www.jianshu.com/p/9ef815162fe9 DISK库 disk schema 用于将配置持久化到磁盘上.配置持久化后,下次重启ProxySQL时就会读取这些 ...

  5. filebeat读取超链接日志 symlinks

    filebeat读取超链接日志文件,还需要增加配置上额外的参数:symlinks: true 符号链接选项允许Filebeat除常规文件外,可以收集符号链接.收集符号链接时,即使报告了符号链接的路径, ...

  6. 6.第五篇 安装keepalived与Nginx

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483796&idx=1&sn=347664de ...

  7. k8s-ingress配置websocket支持

    具体来说,使用的ingress-controller不一样,有关的设置也不太一样 Kubernetes Ingress Controller (k8s官方) 参考 http://github.com/ ...

  8. PAT (Basic Level) Practice 1024 科学计数法 分数 20

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

  9. 驱动开发:通过ReadFile与内核层通信

    驱动与应用程序的通信是非常有必要的,内核中执行代码后需要将其动态显示给应用层,但驱动程序与应用层毕竟不在一个地址空间内,为了实现内核与应用层数据交互则必须有通信的方法,微软为我们提供了三种通信方式,如 ...

  10. 对循环神经网络参数的理解|LSTM RNN Input_size Batch Sequence

    在很多博客和知乎中我看到了许多对于pytorch框架中RNN接口的一些解析,但都较为浅显甚至出现一些不准确的理解,在这里我想阐述下我对于pytorch中RNN接口的参数的理解. 我们经常看到的RNN网 ...