当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

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

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

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

最佳解决办法

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

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

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

  • 第2.1部分 – 使用wpa_supplicant连接到WPA路由器

  • 第2.2部分 – 使用Network Manager连接到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已分配给您。如果没有,并且给你一个像界面不支持扫描的错误,请尝试以下2个选项:

    • 测试您的界面是否在运行: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-SUPPLICANT指南

  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,wired,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. 一些用户已经报告删除哈希并仅在配置中保留密码,例如:

         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(整洁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
    

    将创建一个网络管理器的连接应该看起来像这样:

      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. 验证ESSID的名称,我们继续在下一行使用它,包括它所需的密码(这包括WEP和WPA类型的密码):

    nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD
    

    这里是我连接到ESSID Linux5G的一个例子

wireless,command-line,network-manager,ubuntu

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

nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD ifname WIRELESS_DEVICE_NAME

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

wireless,command-line,network-manager,ubuntu

有关nmcli的更多信息可以通过使用帮助参数获得。例如,如果您想了解有关nmcli dev的信息,您可以键入nmcli dev help。如果您想了解更多有关nmcli dev wifi的信息,请输入nmcli dev wifi help等。

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

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

  • 通过”force”断开: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可以为true或false,也就是说如果设置为false,网络管理器管理的所有网络连接都将断开连接。请注意,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. 保存该文件并重新启动计算机。请注意,这将保存在可从同一台计算机访问的纯文本文件中。

BONUS

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

  1. 点击网络管理器并转到连接信息

wireless,command-line,network-manager,ubuntu

  1. 转到持有无线网卡的Tab

wireless,command-line,network-manager,ubuntu

在这张图片中,这张网卡被命名为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提供相同的功能,但仅通过命令行选项(对脚本有用)我在cron作业中使用它来解决一些autoreconnect错误:

wicd-cli -y -c -m MY_NETWORK_SSID

你也可以”just”有一个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"
}

有很多注意事项,其中以明文形式存在预共享密钥的安全问题(wpa_supplicant可以让您呈现加密或可能只是模糊处理的密钥,检查手册页),还使该文件仅拥有且可读由根来源是一种缓解。

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

第四种办法

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

wireless,command-line,network-manager,ubuntu

您需要使用(右箭头键->)来设置配置;从on-screen指令中可以看出其他一切。

当然,你需要找到一些在没有wicd的情况下上网的方法;我假设你已经解决了这个问题,否则你不会发布。

(这对于OP来说并不及时,因为这个问题在Google上仍然存在,所以只发布在Google上。对于google-seekers:如果你是从咖啡馆或朋友的计算机或其他东西读取它,也许你可以使用电线在某处获得wicd-cursessudo apt-get install wicd-curses一起安装;然后确保您在离开前已知的网络上进行测试!)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/716.html,未经允许,请勿转载。