Since the network manager is troubling me so much I want to replace it (possibly wicd
orNM
from ppa:volanin).
I do not know how to connect and disconnect to the network through the terminal without using network manager.
I would like a command-line way of managing the network.
This applies to 12.04+ since these are the ones I could test but could also be used in older versions. I have separated this guide into several parts, which consist of:
The following command lines can be used to connect and disconnect depending on the Wireless card, wireless security and wireless router settings. Before proceeding, make sure the network service is enabled (For cases where you might start Ubuntu using Recovery mode):
Depending on your Ubuntu Version, you would need to start it using one of the following way:
If using SystemD (since 14.10+):
If using the Legacy init.d way:
sudo /etc/init.d/networking restart
If using the Legacy Upstart way:
sudo service network-manager restart
Part 1: Wireless Routers with no password or WEP Key
For cases where the wireless router has no password or WEP security, do the following:
Open the terminal and lookup for the wireless connection:
(The s is for Scan. wlan0 is my wireless card but could be different for each user. Some have eth0, others wlan2.. You need
sudo
to execute this option.To find out the name of your wireless card simply type iwlist and press TAB. This should autocomplete the line with the network card's name. You can also typeiwconfig
and find the name on the list that will show.)If you do not know the name of your wireless devices type:
iwconfig
which will show you your wired/wireless devices and their names. They might be something like wlan0, wlan1, eth1, eth2..The lookup will show you all possible Access Points (AP) visible to you. After you see your router in the list try to connect to it:
If it does not have a password do the following:
For example
after that, make sure to use
dhclient
so you can get a dynamic IP in case you don't get assigned one by the router. That should leave you connected to the CYREX router.If it has a password then do:
That should connect using the PASSWORD you gave there.
Again, do
dhclient
after connecting to make sure you get an IP assigned.Making sure you are correctly connected is always good so execute
iwconfig
to make sure your wireless card is connected to the SSID you mentioned above. It should show your device connected and the IP assigned to you. If it does not and gives you an error like Interface doesn't support scanning try the following 2 options:sudo ifconfig wlan0 up
sudo
when doing the scan:sudo iwlist wlan0 s
Try bringing the device down and then back up:
Part 2: Wireless Routers with WPA or WPA2 security Key
For cases where the wireless router has a WPA/WPA2 password there are a few ways of doing this. I will mention the 2 most popular ones::
Open the terminal and lookup for the wireless connection:
(The s is for Scan. wlan0 is my wireless card but could be different for each user. Some have eth0, others wlan2.. You need
sudo
to execute this option. To find out the name of your wireless card simply type iwlist and press TAB. This should autocomplete the line with the network card's name. You can also typeiwconfig
and find the name on the list that will show.)If you do not know the name of your wireless devices type:
iwconfig
which will show you your wired/wireless devices and their names. They might be something like wlan0, wlan1, eth1, eth2..The lookup will show you all possible Access Points (AP) visible to you. After you see your router in the list try to connect to it:
Part 2.1 WPA-SUPPLICANT GUIDE: Connecting to a WPA Router with wpa_supplicant
Type the following in the terminal (Assuming you have the
wpasupplicant
package installed which installs all the needed commands we will use here):Example:
wpa_passphrase Virus LinuxFTW > wpa.conf
Where Virus is the name of my router,LinuxFTW is my password and
wpa.conf
is the file where I want to store all of this information in. Note that you can save the file in another place, many users save the file in/etc/wpa_supplicant.conf
instead ofwpa.conf
. The data of the wpa.conf file should be something like this:Up to this point, we should know the name of our wireless card interface (eg: Wlan0, eth2, Wlan2...). We now need to know which Driver is in use. for this we type:
It should show us a lot of information, but there will be a section called **Drivers* which shows all available drivers (These are available when compiling
wpa_supplicant
). In my case it is like this:The whole list is hostap, hermes, madwifi, wext, broadcom, wired, roboswitch, bsd, ndis. This can change depending on how
wpa_supplicant
was compiled, but the one that shows for me should be similar to the one on your system. Most users will select thewext
driver.So now that we have our wireless interface card name and the driver name, we proceed to connect to it using the already created configuration file using the following format:
For example:
Where
-i
is your interface card's name,-c
is where your configuration file is and-D
is the name of the driver you will be using to connect. If it connects correctly, then we press CTRL+C to cancel it and then execute the line again but this time we send it to the background with-B
so we can continue to use the terminal:After that simply do a
sudo dhclient wlan0
to get an IP from the router.Some users have reported removing the Hash and leaving only the password in the config, for example:
Others have added the ssid_scan to the config file:
Or even adding the Key type:
More information about this in
man wpa_supplicant.conf
Part 2.2 NETWORK MANAGER GUIDE: Connecting to a WPA Router with Network Manager
The good thing about network manager is that it comes with a couple of nice scripts and tools. Two of these are
nmcli
andcreate_connection
(Neat Python 3 script) which we will use in this case.After doing the steps mentioned previously to find your router's SSID name (Remember the part about
iwlist
above) we do the following:Where SECURITY is the type of security the Router uses (WPA, WEP), PASSWORD is.. well..the password and SSID_NAME is the SSID Name of the Router. For example:
Will create a connection for Network Manager which should look something like this:
After this, you should get an IP assigned from the router. If not simply do
sudo dhclient wlan0
(Assuming wlan0 is the name of your interface). You can also check your network manager's connections using nmcli like this:nmcli c
which should show something like this:I mention the Network Manager's way because there are a couple of cases where using
wpa_supplicant
will simply not work (Problems between router and wireless card, security issues, etc..). In my case, all attempts to usewpa_supplicant
on one PC did not work, but in another it worked the first time I tried. So am posting both methods to help on each case and to make it easier for users to decide which one they want.Part 3: Easy Connection via nmcli
Although we have talked about the ways to connect to it without a network manager, there is also the case of using nmcli (CLI version of the network manager) when it applies. To do this, we do the following:
Check to see which ESSID we can see:
Verify the name of the ESSID and we proceed on using it on the next line including the password needed for it (This includes WEP and WPA type passwords):
Here is an example of me connecting to the ESSID Linux5G
If you have multiple wireless devices on your computer, you can specify which one to use using the
ifname
parameter like so:nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD ifname WIRELESS_DEVICE_NAME
For example in my case the name of the device is
wlp9s0
so I would use this line to specify the device that I will use to connect with:More information about nmcli can be obtained by using the help parameter. For example if you wanted to know about about
nmcli dev
you would typenmcli dev help
. If you wanted to know more aboutnmcli dev wifi
, you would typenmcli dev wifi help
and so on.Part 4: Disconnecting from a Wireless Router
There are several ways of accomplishing this:
Disconnect by "force":
sudo ifconfig wlan0 down
This will turn your wireless card interface off (Driver turns off). To turn in on simply type
ifconfig wlan0 up
followed by asudo dhclient wlan0
. It will still show as connected if viewed by Network Manager but there will actually be no connection to the router. Trying toping
will throw anconnect: Network is unreachable
error.Release the DHCP IP:
sudo dhclient -r wlan0
Remember to do
sudo dhclient wlan0
to assign yourself an IP again.Disconnect using Network Manager:
nmcli nm enable false
Where nm is the parameter of nmcli that manages and sets Network Manager's states. The option
enable
can be true or false, meaning if set to false, all network connections managed by Network Manager will be disconnected. note that nmcli does not need root permissions.To see the status of Network Manager type
nmcli nm
, it should show something similar to this:Another way of turning the Connection On or Off (Connecting/Disconnecting) is by doing the following:
Part 5: Deleting a Connection
To delete an existing connection is fairly easy. First type in the terminal:
It will output something like this:
Now let us say we want to delete Xcentral, we then proceed with the following command:
After doing it should look something like this:
All connections are stored in
/etc/NetworkManager/system-connections/
If I were to look in that folder right now I would see the following files:
This is only in case you wish to edit/delete/add a connection by hand.
Part 6: Automatic connection when login in
For cases where you would like to login automatically to a wireless router here are the steps:
Open the
interface
file:Add the following information (Assuming your interface is called wlan0):
Save the file and reboot computer. Note that this will be saved on a plain text file which can be accessed from the same computer.
Bonus: Find your wireless connection's name GUI Style
Click on the Network Manager and go to Connection Information
Go to the Tab that holds your wireless card
In this image, this network card is named eth1 (Inside the parenthesis) but this can be different for each user. Normally it would be a wlan (Like wlan0, wlan1, wlan2...) but it can also be eth1, eth2, etc.. So you need to see what name it has.
Another way to find the name quickly is by typing
iwconfig
which will show all the wireless network card available.It's pretty easy if you know how to do it.
Show available wlan access points:
Connect with access point:
wicd comes with 2 command line utilities: wicd-curses and wicd-cli (they may require a separate install) wicd-curse lets you configure/connect disconnect to networks (wired or wireless) interactively, wicd-cli offers the same functionality but through command line options only (useful for scripts) I use it in a cron job to work around some autoreconnect bugs:
Also you can "just" have a wpa_supplicant configuration something like:
/etc/network/interface :
and (as a WPA example) /etc/wpa.conf:
there are a lot of considerations to this, of which the security concern of having the preshared key in clear text (wpa_supplicant can let you present an encrypted or maybe just obfuscated key, check the man page), also making that file owned and readable only by root is a mitigation.
I think having several network sections would enable to connect several networks, by order of priority.
I use
wicd-curses
, which I find to be the easiest user interface by far.You need to use the → (right arrow key
->
) to set configurations; everything else is obvious from the on-screen instructions.Of course you need to find some way of getting on the internet without
wicd
; I'm assuming you have already solved that or else you wouldn't be posting.(This is not timely to the OP, just posting for posterity since this question still comes up on Google. To the google-seekers: if you're reading this from a café or friend's computer or something, maybe you can use a wire somewhere to get
wicd-curses
installed withsudo apt-get install wicd-curses
; then make sure you test it out on a network that's known to work before leaving!)Solution for Ubuntu 18.04+ without using NetworkManager
Working on a RasPi with freshly installed Ubuntu Server 20.04: NetworkManager (
nmcli
/nmtui
etc) isn't already installed, so a more manual approach may be helpful, at least to start with.Ubuntu's underlying networking looks to be handled by
netplan
from version 18.04 onwards, so this is what needs to be configured for those versions. A useful walk-through provides an answer; in short (e.g.),Determine the name of your wifi interface,
(typically it's
wlan0
- look for this in the output fromip a
). Now edit/etc/netplan/50-cloud-init.yaml
,(other editors are available etc) and add a
wifis:
section as below,enable this with,
finally check that your wifi is now up by looking for the
wlan0
interface and corresponding IP addresses,