如何在终端中手动连接和断开网络?

由于网络管理员非常困扰我,我想替换它(可能是wicdNM来自ppa:volanin )。

我不知道如何通过终端连接和断开网络而不使用网络管理器。

我想要一种管理网络的命令行方式。

这适用于12.04+,因为这些是我可以测试的,但也可以在旧版本中使用。 我已将本指南分为几个部分,其中包括:

第1部分 – 没有密码或WEP密钥的无线路由器

第2部分 – 具有WPA密钥的无线路由器

  • 第2.1部分 – 使用wpa_supplicant连接到WPA路由器
  • 第2.2部分 – 使用网络管理器连接到WPA路由器

第3部分 – 通过nmcli轻松连接

第4部分 – 断开与无线路由器的连接

第5部分 – 删除连接(包括配置文件)

第6部分 – 登录时自动连接

奖金 – 如何通过GUI查找您的网络接口名称

以下命令行可用于连接和断开连接,具体取决于无线卡,无线安全和无线路由器设置。 在继续之前,请确保已启用网络服务(对于可能使用恢复模式启动Ubuntu的情况):

根据您的Ubuntu版本,您需要使用以下方法之一启动它:

如果使用Legacy init.d方式:

 sudo /etc/init.d/networking restart 

如果使用Legacy Upstart方式:

 sudo service network-manager restart 

如果使用SystemD:

 sudo systemctl start networking 

1.无线路由器(仅限密码或WEP安全)

对于无线路由器没有密码或WEP安全性的情况,请执行以下操作:

  1. 打开终端并查找无线连接:

     iwlist wlan0 s 

    s代表扫描.wlan0是我的无线网卡,但每个用户可能有所不同。有些有eth0,有些有wlan2 ..你需要sudo来执行这个选项。要找出无线网卡的名称,只需输入iwlist并按TAB 。这应该使用网卡名称自动完成该行。您还可以键入iwconfig并在列表中找到要显示的名称。)

    如果您不知道无线设备的名称,请输入: iwconfig ,它将显示您的有线/无线设备及其名称。 它们可能类似于wlan0,wlan1,eth1,eth2 ..

  2. 查找将显示您可以看到的所有可能的接入点(AP)。 在列表中看到路由器后,尝试连接到它:

    如果没有密码,请执行以下操作:

     iwconfig wlan0 essid NAME_OF_ACCESS_POINT 

    例如

     iwconfig wlan0 essid CYREX 

    之后,请确保使用dhclient这样您就可以获得动态IP,以防路由器没有为您分配一个动态IP。 这应该让你连接到CYREX路由器。

    如果有密码则执行:

     iwconfig wlan0 essid CYREX key PASSWORD 

    那应该用你在那里给的密码连接起来。

    再次,连接后执行dhclient以确保获得IP分配。

  3. 确保正确连接始终是好的,因此请执行iwconfig以确保您的无线卡已连接到上面提到的SSID。 它应显示您的设备已连接以及分配给您的IP。 如果没有,并且给出了像Interface不支持扫描的错误,请尝试以下两个选项:

    • 测试你的界面是否UP: sudo ifconfig wlan0 up

    • 尝试在执行扫描时添加sudosudo iwlist wlan0 s

    • 尝试关闭设备,然后重新启动:

       sudo ifconfig wlan0 down sudo ifconfig wlan0 up 

2.无线路由器(WPA或WPA2安全)

对于无线路由器具有WPA / WPA2密码的情况,有几种方法可以做到这一点。 我会提到2个最受欢迎的::

  1. 打开终端并查找无线连接:

     iwlist wlan0 s 

    s代表扫描.wlan0是我的无线网卡,但每个用户可能不同。有些有eth0,有些有wlan2 ..你需要sudo才能执行这个选项。要查找无线网卡的名称,只需键入iwlist并按TAB 。这应该使用网卡名称自动完成该行。您还可以键入iwconfig并在列表中找到要显示的名称。)

    如果您不知道无线设备的名称,请输入: iwconfig ,它将显示您的有线/无线设备及其名称。 它们可能类似于wlan0,wlan1,eth1,eth2 ..

  2. 查找将显示您可以看到的所有可能的接入点(AP)。 在列表中看到路由器后,尝试连接到它:

2.1 WPA-供应者指南

  1. 在终端中键入以下内容(假设您安装了wpasupplicant软件包,它将安装我们将在此处使用的所有必需命令):

     wpa_passphrase SSID PASSWORD > CONFIG_FILE 

    示例: wpa_passphrase Virus LinuxFTW > wpa.conf

    其中Virus是路由器的名称, LinuxFTW是我的密码, wpa.conf是我要存储所有这些信息的文件。注意你可以将文件保存在其他地方,很多用户将文件保存在/etc/wpa_supplicant.conf而不是wpa.conf 。 wpa.conf文件的数据应该是这样的:

     network={ ssid="Virus" #psk="LinuxFTW" psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae } 
  2. 到目前为止,我们应该知道无线网卡接口的名称(例如:Wlan0,eth2,Wlan2 ……)。 我们现在需要知道正在使用哪个驱动程序。 为此,我们输入:

     wpa_supplicant 

    它应该向我们展示很多信息,但是会有一个名为** Drivers *的部分显示所有可用的驱动程序(这些驱动程序在编译wpa_supplicant时可用)。 就我而言,它是这样的:

     drivers: wext = Linux wireless extensions (generic) nl80211 = Linux nl80211/cfg80211 wired = Wired Ethernet driver none = no driver (RADIUS server/WPS ER) 

    整个列表是hostap,hermes,madwifi,wext,broadcom,有线,roboswitch,bsd,ndis。 这可以根据wpa_supplicant编译方式而改变,但是为我显示的那个应该类似于系统上的那个。 大多数用户将选择wext驱动程序。

  3. 现在我们有了无线接口卡名称和驱动程序名称,我们继续使用已创建的配置文件使用以下格式连接到它:

     wpa_supplicant -iINTERFACE_NAME -cCONFIGURATION_FILE -DDRIVER_NAME 

    例如:

     wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -Dwext 

    其中-i是您的接口卡的名称, -c是您的配​​置文件所在的位置, -D是您将用于连接的驱动程序的名称。 如果它连接正确,那么我们按CTRL + C取消它然后再次执行该行,但这次我们用-B将它发送到后台,所以我们可以继续使用终端:

     wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext 

    之后只需执行sudo dhclient wlan0即可从路由器获取IP。

  4. 有些用户报告删除了Hash并且只在配置中保留了密码,例如:

      network={ ssid="Virus" psk="LinuxFTW" } 

    其他人已将ssid_scan添加到配置文件中:

      network={ ssid="Virus" scan_ssid=1 #psk="LinuxFTW" psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae } 

    甚至添加密钥类型:

      network={ ssid="Virus" scan_ssid=1 key_mgmt=WPA-PSK #psk="LinuxFTW" psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae } 

    有关这方面的更多信息,请参阅man wpa_supplicant.conf

2.2网络管理员指南

网络管理员的好处是它带有几个不错的脚本和工具。 其中两个是nmclicreate_connection (Neat Python 3脚本),我们将在这种情况下使用它们。

  1. 在完成前面提到的步骤后找到路由器的SSID名称(请记住上面关于iwlist的部分),我们执行以下操作:

     sudo /usr/share/checkbox/scripts/create_connection -S SECURITY_TYPE -K PASSWORD SSID_NAME 

    如果SECURITY是路由器使用的安全类型(WPA,WEP),则PASSWORD是..井……密码和SSID_NAME是路由器的SSID名称。 例如:

     sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus 

    将为Network Manager创建一个看起来像这样的连接:

      cyrex@cyrex:~$ sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus [sudo] password for cyrex: Connection Virus registered Connection Virus activated. 
  2. 在此之后,您应该从路由器分配IP。 如果不是简单地做sudo dhclient wlan0 (假设wlan0是你的界面的名字)。 您还可以使用nmcli检查网络管理员的连接,如下所示: nmcli c应显示如下内容:

      cyrex@cyrex:~$ nmcli c NAME UUID TYPE TIMESTAMP-REAL Xcentral f51a5a64-8a91-47d6-897c-28efcd84d2b0 802-11-wireless Fri 22 Mar 2013 02:25:54 PM VET Realtek 9ded7740-ad29-4c8f-861f-84ec4da87f8d 802-3-ethernet Tue 05 Mar 2013 01:18:31 AM VET Intel e25b1fd8-c4ff-41ac-a6bc-22620296f01c 802-3-ethernet Fri 05 Apr 2013 10:04:05 PM VET Virus 3f8ced55-507b-4558-a70b-0d260441f570 802-11-wireless Tue 09 Apr 2013 06:31:10 AM VET 

我提到了网络管理器的方式,因为有几种情况下使用wpa_supplicant根本不起作用(路由器和无线卡之间的问题,安全问题等)。 在我的情况下,所有在一台PC上使用wpa_supplicant尝试都不起作用,但在另一台PC上我第一次尝试使用它。 所以我发布了两种方法来帮助解决每个案例,并让用户更容易决定他们想要哪一个。

3.通过nmcli轻松连接

虽然我们已经讨论了在没有网络管理器的情况下连接到它的方法,但是在应用时也存在使用nmcli(网络管理器的CLI版本)的情况。 为此,我们执行以下操作:

  1. 检查我们可以看到哪个ESSID:

     nmcli dev wifi 
  2. validationESSID的名称,我们继续在下一行使用它,包括它所需的密码(包括WEP和WPA类型密码):

     nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD 

    这是我连接到ESSID Linux5G的示例

在此处输入图像描述

如果您的计算机上有多个无线设备,则可以使用ifname参数指定要使用的设备,如下所示:

 nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD ifname WIRELESS_DEVICE_NAME 

例如,在我的情况下,设备的名称是wlp9s0所以我将使用此行来指定我将用于连接的设备:

在此处输入图像描述

可以使用help参数获取有关nmcli的更多信息。 例如,如果您想了解有关nmcli dev请输入nmcli dev help 。 如果你想了解更多关于nmcli dev wifi ,你可以输入nmcli dev wifi help等等。

4.断开无线路由器的连接

有几种方法可以实现这一目标:

  • 断开“强制”: sudo ifconfig wlan0 down

    这将关闭您的无线卡接口(驱动程序关闭)。 要打开,只需输入ifconfig wlan0 up然后输入sudo dhclient wlan0 。 如果网络管理器查看它仍将显示为已连接,但实际上没有与路由器的连接。 尝试ping会抛出connect: Network is unreachable错误。

  • 释放DHCP IP: sudo dhclient -r wlan0

    记得做sudo dhclient wlan0自己分配一个IP。

  • 使用网络管理器断开连接: nmcli nm enable false

    其中nm是nmcli的参数,用于管理和设置网络管理器的状态。 选项enable可以为truefalse ,这意味着如果设置为false ,则将断开Network Manager管理的所有网络连接。 请注意,nmcli不需要root权限。

要查看网络管理器类型nmcli nm的状态,它应该显示类似于此的内容:

  cyrex@cyrex:~$ nmcli nm RUNNING STATE WIFI-HARDWARE WIFI WWAN-HARDWARE WWAN running connected enabled enabled enabled enabled 

打开或关闭连接(连接/断开连接)的另一种方法是执行以下操作:

 nmcli c down id NAME` - Will disconnect the connection NAME nmcli c up id NAME` - Will connect the connection NAME 

5.删除连接

删除现有连接相当容易。 终端中的第一种类型:

 nmcli c 

它将输出如下内容:

 cyrex@cyrex:~$ nmcli c NAME UUID TYPE TIMESTAMP-REAL Realtek 9ded7740-ad29-4c8f-861f-84ec4da87f8d 802-3-ethernet Tue 05 Mar 2013 01:18:31 AM VET PrivateSys 86b2b37d-4835-44f1-ba95-46c4b747140f 802-11-wireless Sun 21 Apr 2013 07:52:57 PM VET pepe 9887664b-183a-45c0-a81f-27d5d0e6d9d8 802-11-wireless Thu 18 Apr 2013 02:43:05 AM VET Virus 3f8ced55-507b-4558-a70b-0d260441f570 802-11-wireless Tue 16 Apr 2013 11:33:24 AM VET Intel e25b1fd8-c4ff-41ac-a6bc-22620296f01c 802-3-ethernet Sun 21 Apr 2013 08:12:29 PM VET Xcentral f51a5a64-8a91-47d6-897c-28efcd84d2b0 802-11-wireless Fri 22 Mar 2013 02:25:54 PM VET 

现在让我们说我们要删除Xcentral ,然后继续执行以下命令:

 nmcli c delete id Xcentral 

在做之后应该看起来像这样:

 cyrex@cyrex:~$ nmcli c delete id Xcentral cyrex@cyrex:~$ nmcli c NAME UUID TYPE TIMESTAMP-REAL Realtek 9ded7740-ad29-4c8f-861f-84ec4da87f8d 802-3-ethernet Tue 05 Mar 2013 01:18:31 AM VET PrivateSys 86b2b37d-4835-44f1-ba95-46c4b747140f 802-11-wireless Sun 21 Apr 2013 07:52:57 PM VET pepe 9887664b-183a-45c0-a81f-27d5d0e6d9d8 802-11-wireless Thu 18 Apr 2013 02:43:05 AM VET Virus 3f8ced55-507b-4558-a70b-0d260441f570 802-11-wireless Tue 16 Apr 2013 11:33:24 AM VET Intel e25b1fd8-c4ff-41ac-a6bc-22620296f01c 802-3-ethernet Sun 21 Apr 2013 08:12:29 PM VET 

所有连接都存储在/etc/NetworkManager/system-connections/

如果我现在要查看该文件夹,我会看到以下文件:

 cyrex@cyrex:~$ ls /etc/NetworkManager/system-connections Intel pepe PrivateSys Realtek Virus 

这仅在您希望手动编辑/删除/添加连接的情况下。

6.登录时自动无线连接

如果您想自动登录无线路由器,请执行以下步骤:

  1. 打开interface文件:

     sudo nano /etc/network/interfaces 
  2. 添加以下信息(假设您的接口名为wlan0):

     auto wlan0 iface wlan0 inet static address ASSIGNED_IP netmask 255.255.255.0 gateway THE_GATEWAY wireless-essid YOURSSID wireless-key WIRELESSKEY_HERE 
  3. 保存文件并重新启动计算机。 请注意,这将保存在纯文本文件中,可以从同一台计算机访问。

奖金

找到您的无线连接的名称GUI样式

  1. 单击网络管理器,然后转到连接信息

在此处输入图像描述

  1. 转到包含无线网卡的选项卡

在此处输入图像描述

在此图像中,此网卡名为eth1 (在括号内),但每个用户可能会有所不同。 通常它会是一个wlan(比如wlan0,wlan1,wlan2 ……)但它也可以是eth1,eth2等。所以你需要看看它有什么名字。

另一种快速查找名称的方法是输入iwconfig ,它将显示所有可用的无线网卡。

如果你知道怎么做,这很容易。

显示可用的wlan接入点:

 nmcli dev wifi 

与接入点连接:

 nmcli dev wifi connect $ACCESS_POINT password $PASSWORD 

wicd带有2个命令行实用程序:wicd-curses和wicd-cli(它们可能需要单独安装)wicd-curse允许您以交互方式配置/连接断开网络(有线或无线),wicd-cli提供相同的function但通过仅限命令行选项(对脚本有用)我在cron作业中使用它来解决一些自动连接错误:

 wicd-cli -y -c -m MY_NETWORK_SSID 

你也可以“只”拥有一个wpa_supplicant配置:

/ etc / network / interface:

 auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa.conf 

和(作为WPA示例)/etc/wpa.conf:

 network={ ssid="MY_NETWORK_SSID" proto=RSN key_mgmt=WPA_PSK pairwise=CCMP_TKIP group=CCMP_TKIP psk="my network key in the clear" } 

对此有很多考虑,其中安全问题是以明文forms存在预共享密钥(wpa_supplicant可以让您呈现加密或可能只是混淆的密钥,请查看手册页),同时使该文件仅拥有和可读通过root是一种缓解。

认为有几个网络部分可以按优先级顺序连接多个网络。

我使用wicd-curses ,到目前为止我发现它是最简单的用户界面。

WICD,诅咒

您需要使用 (右箭头键-> )来设置配置; 从屏幕上的说明中可以清楚地看到其他一切。

当然,你需要找到一些没有wicd上网的wicd ; 我假设你已经解决了这个问题,否则你就不会发帖了。

(这对于OP而言并不及时,因为这个问题仍然出现在谷歌上。对谷歌寻求者:如果你是从咖啡馆或朋友的电脑或其他东西读这个,也许你可以在某个地方使用电线使用sudo apt-get install wicd-curses ;然后确保在离开之前在已知工作的网络上测试它!)