Connect to a wireless network via command line - gHacks Tech News

Connect to a wireless network via command line

I know, the first thing you are asking is "Why would I want to have to connect to a wireless network from the command line?" To that question I can give you a simple answer...What if you want to create a script to run that will bring up your wireless network as soon as your desktop is loaded? You could get really complex and create a start up script to load a desktop based on what wireless access point you needed to join. That's one of the beauties of Linux, if you can dream it, you can do it.

But I am getting too far ahead of myself. Let's get back to the basics shall we? First I am going to assume that your wireless card was detected by your distribution and has the proper drivers loaded. With that accomplished you will need to have the following tools:

  • ifconfig: Enable your wireless device.
  • iwlist: List the available wireless access points.
  • iwconfig: Configure your wireless connection.
  • dhclient: Get your IP address via dhcp.

The first command you need to use is ifconfig. With this command you are going to enable your wireless device. Most likely your device will be called wlan0. So in order to enable this you would enter the command (as root):

ifconfig wlan0 up

You won't see any feedback unless there is a problem.

The next step is to scan for your wireless network to make sure it is available. Do this with the following command:

iwlist wlan0 scan

With this command you will see output like the following:

Cell 01 - Address: 00:21:43:4E:9B:F0
ESSID:"HAIR STROBEL"
Mode:Master
Channel:5
Frequency:2.432 GHz (Channel 5)
Quality=100/100? Signal level:-45 dBm? Noise level=-95 dBm
Encryption key:on
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 22 Mb/s
6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
36 Mb/s; 48 Mb/s; 54 Mb/s
Extra:tsf=000002f1d9be01b7

So you know this network is available. From the above output you can also see this network is employing WPA2, so you will need a passkey. If you don't know that passkey, you are out of luck (which would be the case no matter if you were using a front end in Linux, Windows, or Mac.)

Now it's time to configure your connection. To do this issue the command:

iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY

Where NETWORK_ID is the ESSID of the network with which you want to connect and WIRELESS_KEY is the security key needed to connect to the wireless access point.

Note: iwconfig defaults to using a HEX key. If you want to use an ascii key you will have to add the "s:" prefix to your key like so:

iwconfig wlan0 essid NETWORK_ID key s:WIRELESS_KEY

Now that you have your configuration set, it's time to get an IP address with the help of dhclient. Issue the command:

dhclient wlan0

If no output is reported there are no errors. You should now be up and running.

Make it a script

Of course who wants to type out all of those commands. Instead of doing this you could create a script for this like so:

#! /bin/bash
ifconfig wlan0
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY
dhclient wlan0

Where NETWORK_ID is the actually essid of the network and WIRELESS_KEY is the security key for that network. Save this script with the filename wireless_up.sh and then make this script executable with the command:

chmod u+x wireless_up.sh

You can make this a global command by placing this script in /usr/local/bin. You can now issue the command wireless_up.sh from anywhere in your directory structure and it will run, connecting you to the configured wireless access point.

If you frequent many wireless access points you can create a script for each one giving them each unique names. By doing this, when you need to connect to a specific access point, just run the script associated with that access point and you're good to go.

We need your help

Advertising revenue is falling fast across the Internet, and independently-run sites like Ghacks are hit hardest by it. The advertising model in its current form is coming to an end, and we have to find other ways to continue operating this site.

We are committed to keeping our content free and independent, which means no paywalls, no sponsored posts, no annoying ad formats (video ads) or subscription fees.

If you like our content, and would like to help, please consider making a contribution:

Comments

  1. RogueSpear said on April 14, 2009 at 8:33 pm
    Reply

    As always, very nice article. I’ve been Googling for quite some time now on a couple of issues and unfortunately am not coming up with answers. Hoping someone may be able to offer some guidance. First issue is that I have an Intel 4965agn card. Both at work and home I only connect to a 5Ghz 802.11n network. In Windows I’m able to turn off the 2.4Ghz radio, but I’ve yet to find a way to do this in Linux. The second issue is that at work I use the wireless on one network and my wired on a completely separate network. I can’t seem to find a way to keep both interfaces up at the same time. All of my search efforts on this particular issue inevitably result in a bunch of hits revolving around automatic switching from one to the other or turning your computer into a router.

    Any help or even just a link to something would be greatly appreciated.

  2. FitzgeraldReno said on April 14, 2009 at 10:10 pm
    Reply

    There is a way to do something like this on windows?

  3. RogueSpear said on April 14, 2009 at 10:17 pm
    Reply

    Well to be a little more precise, the Intel wireless driver for Windows allows you to do this. I did download the latest build of Intel’s 4965 driver for Linux, and I think I implemented it properly, but I just don’t see how to do this. I hope it isn’t something completely obvious that I should have noticed immediately.

  4. RSWRC said on April 15, 2009 at 9:25 am
    Reply

    Script for WinXP would be great.

  5. gB said on April 17, 2009 at 9:56 am
    Reply

    Just for somebody reading this who may not know any better and come along later and copy and paste the commands as is and then it doesn’t work, or you get an error saying command not found. The last command should read chmod u+x wireless_up.sh

    (No disrespect meant. Just trying to help people who maybe new to linux. I still have a long ways to go myself)

  6. jack said on April 19, 2009 at 9:03 pm
    Reply

    gB: Thanks for pointing that out. I made the correction in the article.

  7. max said on April 24, 2009 at 8:58 pm
    Reply

    holy crap thank you for writing this, i’ve been trying to figure out for too long how to connect via command line (downloaded something that messed up too many configs and couldn’t get updates cause i couldn’t connect to net). also, just to mention, if the line:

    Encryption key
    is off

    you don’t have to load a password. Just a heads up. Thanks again.

  8. DaVince said on May 10, 2009 at 7:14 pm
    Reply

    Thanks a lot, this will definitely help me in times of need or running in console-only. :)

  9. hohoboy said on August 12, 2009 at 11:57 pm
    Reply

    This was a great tip. Thanks for writing it up.

  10. sree said on September 28, 2009 at 2:35 pm
    Reply

    Any one know how to restart the wireless router through command prompt?

    1. LauritzT said on June 29, 2016 at 12:36 pm
      Reply

      You can’t do that from another device.

  11. Tom said on December 26, 2009 at 7:47 am
    Reply

    Thanks a lot! I use a usb wifi nic and this helped a lot :D

  12. Josh said on January 23, 2010 at 9:52 pm
    Reply

    this saved my bacon. thank you, thank you, thank you.

  13. vev said on February 25, 2010 at 3:57 pm
    Reply

    Thanks! I did however needed to modify the script a little bit, for the low signal connections:

    before we ‘dhclient wlan0’ I added a ‘sleep 10’ that gave the wireless card enough time to establish a connection. I hope it helps someone

  14. root9885 said on April 13, 2010 at 7:19 am
    Reply

    [email protected]:~# iwconfig wlan1 essid dlink key s:2208tzzgist
    Error for wireless request “Set Encode” (8B2A) :
    SET failed on device wlan1 ; Invalid argument.

    how to get it?

  15. root9885 said on April 13, 2010 at 7:21 am
    Reply

    [email protected]:~# iwlist wlan1 scan
    wlan1 Scan completed :
    Cell 01 – Address: 1C:AF:F7:1A:75:C4
    Channel:6
    Frequency:2.437 GHz (Channel 6)
    Quality=55/70 Signal level=-55 dBm
    Encryption key:on
    ESSID:”dlink”
    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s
    18 Mb/s; 36 Mb/s; 54 Mb/s
    Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s
    Mode:Master
    Extra:tsf=00000002c718a153
    Extra: Last beacon: 476ms ago
    IE: Unknown: 0005646C696E6B
    IE: Unknown: 010882848B961224486C
    IE: Unknown: 030106
    IE: Unknown: 2A0104
    IE: Unknown: 32040C183060
    IE: Unknown: 2D1AEE1117FF000000010000000000000000000000000C0000000000
    IE: Unknown: 3D1606070700000000000000000000000000000000000000
    IE: Unknown: 3E0100
    IE: WPA Version 1
    Group Cipher : TKIP
    Pairwise Ciphers (2) : TKIP CCMP
    Authentication Suites (1) : PSK
    IE: IEEE 802.11i/WPA2 Version 1
    Group Cipher : TKIP
    Pairwise Ciphers (2) : TKIP CCMP
    Authentication Suites (1) : PSK
    IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
    IE: Unknown: 0B05020084127A
    IE: Unknown: 7F0101
    IE: Unknown: DD07000C4304000000
    IE: Unknown: 0706474220010D10
    IE: Unknown: DD1E00904C33EE1117FF000000010000000000000000000000000C0000000000
    IE: Unknown: DD1A00904C3406070700000000000000000000000000000000000000

  16. JB said on June 3, 2010 at 2:59 pm
    Reply

    how to find wifi devive module name

  17. Chris said on June 7, 2010 at 10:14 pm
    Reply

    * iwlist: List the available wireless access points.
    * iwconfig: Configure your wireless connection

    Sounds great! Where do I find these?

    S50:/home/chris# iwlist
    bash: iwlist: command not found
    S50:/home/chris# iwconfig
    bash: iwconfig: command not found
    .

  18. DaVince said on June 7, 2010 at 10:21 pm
    Reply
  19. Chris said on June 7, 2010 at 11:10 pm
    Reply

    Oops! I had installed wireless tools, but…… not on this machine! Hence the ‘…not found’.

  20. muoiba said on December 29, 2010 at 5:07 am
    Reply

    step iwlist wlan0 scan
    mycomputer result :

    Cell 01 – Address: 00:21:43:4E:9B:F0
    ESSID:”HAIR STROBEL”
    Mode:Master
    Channel:5
    Frequency:2.432 GHz (Channel 5)
    Quality=100/100? Signal level:-45 dBm? Noise level=-95 dBm
    Encryption key:on
    IE: WPA Version 1
    Group Cipher : TKIP
    Pairwise Ciphers (1) : TKIP
    Authentication Suites (1) : PSK
    IE: IEEE 802.11i/WPA2 Version 1
    Group Cipher : TKIP
    Pairwise Ciphers (1) : CCMP
    Authentication Suites (1) : PSK

    Would you please explain to me?

    Thank you .

    Best regards
    battran

  21. Avinash said on March 13, 2011 at 6:34 am
    Reply

    Thx bro.. this worked for me..

  22. Polonium said on July 12, 2011 at 8:54 pm
    Reply

    Hi!
    Excellent guide. I tried to do the final iwconfig, but the result is iwconfig: unknown command (my Essie). I tried using the s: prefix as well. What is wrong?

  23. Brian said on August 27, 2011 at 1:52 pm
    Reply

    After I type ‘dhclient wlan0’ I get some text and it looks like its trying to connect, but isn”t working. It says “DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 3” and this text repeats every few seconds with a different interval number. After 5 times, it says “No DHCPOFFERS received” and “No working leases in persistent database – sleeping”.

    Any suggestions how to connect to the wireless router?

    Thanks!

  24. Brian said on August 27, 2011 at 1:56 pm
    Reply

    for me this shows text that indicates that its trying to connect:

    after 5 trys it times out and says:

    “No DHCOFFERS received”
    “No working leases in persistent database – sleeping”j

    ???

    Any suggestions on how to connect to my wireless router?

    Thanks!!!

  25. Brian said on August 27, 2011 at 1:57 pm
    Reply

    oh, yeah, it also says: “wmaster0: unknown hardware address type 801”

  26. viv said on September 29, 2011 at 1:43 pm
    Reply

    Do you also know how to enable Ad-hoc wireless on HP TouchPad?

    There is workaround all over precentral.net but that is not a solutiion.

  27. that one guy said on October 16, 2011 at 3:13 pm
    Reply

    So, just taking a look at this and going off of experience….this script shouldn’t work in this example. Correct me if I’m wrong, but iwconfig can only authenticate an interface using open or WEP encryption. I believe you’d need to modify wpa_supplicant.conf to contain the relevant data for your network (essid, encryption/key) and then use wpa_supplicant to authenticate…

  28. Val said on June 16, 2012 at 1:41 am
    Reply

    You’re awesome! Thank you so much, it worked perfectly.

  29. abellong said on July 15, 2012 at 7:52 pm
    Reply

    Very good article! Thank you very much!

  30. meta said on July 31, 2012 at 2:55 pm
    Reply

    Hi,
    I’m on Imagination Meta platform (embedded linux), and dhclient is not available. Is there any other command to get the ip address?

    1. xouns said on November 2, 2012 at 5:19 pm
      Reply

      Sometimes the command dhcpcd works also, or you could try installing the pakkage usingyour package manager.

  31. Threeck said on August 15, 2012 at 12:07 pm
    Reply

    “If no output is reported there are no errors. You should now be up and running.”

    –this is sort of misleading, because after typing [dhclient wlan0] there will definitely be an output, and some users (especially those new to linux) might think that there is an error. It should be changed to something like:

    “If the output says something like [bound to 192.168.x.x — renewal in xx seconds] there are no errors and you have successfully connected to the wireless network.”

    Thanks! this just might help some people who are starting out with linux. Cheers!

  32. Sujay M said on November 1, 2012 at 9:05 pm
    Reply

    Hi when i do iwlist wlan0 scan i get

    Cell 04 – Address: 4C:60:DE:CD:CA:6A
    Channel:1
    Frequency:2.412 GHz (Channel 1)
    Quality=34/70 Signal level=-76 dBm
    Encryption key:off
    ESSID:”DOTARDS”
    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
    9 Mb/s; 12 Mb/s; 18 Mb/s
    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
    Mode:Master
    Extra:tsf=0000000118bb3176
    Extra: Last beacon: 12848ms ago
    IE: Unknown: 0007444F5441524453
    IE: Unknown: 010882848B960C121824
    IE: Unknown: 030101
    IE: Unknown: 050401020000
    IE: Unknown: 2A0104
    IE: Unknown: 32043048606C
    IE: Unknown: DD0600E04C020160
    IE: Unknown: DD0E0050F204104A0001101044000102

    [email protected]:~$ iwconfig wlan0 essid DOTARDS
    Error for wireless request “Set ESSID” (8B1A) :
    SET failed on device wlan0 ; Operation not permitted.

    Please help me in connecting to the network

    1. adhi said on November 12, 2013 at 2:33 am
      Reply

      You should issue the iwconfig command with sudo

  33. bruno said on December 30, 2013 at 11:47 pm
    Reply

    Thankd you helped me a lot!

  34. charles said on April 13, 2014 at 5:22 am
    Reply

    So I did the, dhclient, and got,,,,ls: cannot access /var/run/netconfig//wlan0/: no such file or directory. Is there a file or directory I need to add to my system.

  35. khilio said on May 8, 2014 at 10:36 pm
    Reply

    nice work thxx :D

  36. asd said on September 8, 2015 at 8:43 am
    Reply

    to scan for essid
    iwlist wlan0 scanning | grep -i ‘essid’

  37. Marta said on January 19, 2017 at 12:59 am
    Reply

    thank you for the nice article. Its pretty good an easy to follow for an beginner.
    But can you please write somewhere that it isnt working with WPA/WPA2
    (an article about that would quite nice)

Leave a Reply