Search This Blog

Sunday, December 25, 2011

verizon router dhcp getting a fixed IP address

I am currently using Verizon DSL to connect to the internet. So, I have

laptop -> router -> internet

A minor irritation with this set up is that the router can potentially assign different IP addresses whenever I do a reboot or something akin to /etc/init.d/networking restart. For example today it can be 192.168.1.58, tomorrow it could be 192.168.1.68 etc.,

I currently have

$ifconfig
eth0 Link encap:Ethernet HWaddr 00:15:c5:19:9c:1a
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:6790 errors:0 dropped:0 overruns:0 frame:0
TX packets:6790 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:773105 (754.9 KiB) TX bytes:773105 (754.9 KiB)

wlan0 Link encap:Ethernet HWaddr 00:13:02:9e:cc:1b
inet addr:192.168.1.21 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::213:2ff:fe9e:cc1b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7486622 errors:0 dropped:0 overruns:0 frame:0
TX packets:4833561 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2650697959 (2.4 GiB) TX bytes:608573891 (580.3 MiB)

To have the same IP address, say 192.168.1.78, every time the computer is booted

1) Add the following lines to /etc/dhcp/dhclient.conf

alias {
interface "wlan0";
fixed-address 192.168.1.78;
option subnet-mask 255.255.255.255;
}

2) restart the network

sudo /etc/init.d/networking restart

Now you should see

$ifconfig
eth0 Link encap:Ethernet HWaddr 00:15:c5:19:9c:1a
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:6790 errors:0 dropped:0 overruns:0 frame:0
TX packets:6790 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:773105 (754.9 KiB) TX bytes:773105 (754.9 KiB)

wlan0 Link encap:Ethernet HWaddr 00:13:02:9e:cc:1b
inet addr:192.168.1.21 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::213:2ff:fe9e:cc1b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7486678 errors:0 dropped:0 overruns:0 frame:0
TX packets:4833604 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2650705479 (2.4 GiB) TX bytes:608589238 (580.3 MiB)

wlan0:0 Link encap:Ethernet HWaddr 00:13:02:9e:cc:1b
inet addr:192.168.1.78 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Note the new wlan:0 interface which is always assigned to 192.168.1.78.

Sunday, August 07, 2011

extract historical versions of a file tracked by git

Say, I have a file test.txt being tracked by git.
$git log test.txt
commit 809ebdbd3c44b9310a7a0f67d61897d5d8f9b6d2
Author: rajulocal
Date: Sun Aug 7 14:11:31 2011 -0400

version 15

commit aec45562ad09257ce85eaf00f5a4fa6912e9e51e
Author: rajulocal
Date: Sun Aug 7 14:11:21 2011 -0400

version 14

commit 7fb63da179a2026ba92a8875ff7d3da881ef5854
Author: rajulocal
Date: Sun Aug 7 14:11:11 2011 -0400

version 13

commit 9b3ca5d3d7497e44c012f5ccd5daced2dd90ec12
Author: rajulocal
Date: Sun Aug 7 14:10:51 2011 -0400

version 12

commit d0b5471fa2abce0057cce1d61240e78c09406c04
Author: rajulocal
Date: Sun Aug 7 14:10:40 2011 -0400

version 11

commit e3af4e1a85b4ff07c31c8dcda47eb41c3f3c830b
Author: rajulocal
Date: Sun Aug 7 14:10:26 2011 -0400

version 10

commit be762c0ee45ec6046fa960cace9acae513b80137
Author: rajulocal
Date: Sun Aug 7 14:10:18 2011 -0400

version 9

commit 03ad798434559300cff26f6a238d7b0f05ad53d2
Author: rajulocal
Date: Sun Aug 7 14:09:59 2011 -0400

version 8

commit 94c50cce3b24e572133eeaedc5bfe00aad568aec
Author: rajulocal
Date: Sun Aug 7 14:09:52 2011 -0400

version 7

commit ab63e2bc7b258f702cc8c516c1f16bafc754cf27
Author: rajulocal
Date: Sun Aug 7 14:09:44 2011 -0400

version 6

commit 16c896d19e00267b63537596485074488cd20a85
Author: rajulocal
Date: Sun Aug 7 14:09:37 2011 -0400

version 5

commit 6937331a12209121ba24d111e1ca5128a3c1e836
Author: rajulocal
Date: Sun Aug 7 14:09:21 2011 -0400

version 4

commit 7ec1c7f98a152f6b760ff1561a3b805cc5e374e9
Author: rajulocal
Date: Sun Aug 7 14:09:13 2011 -0400

version 3

commit 5b3788ad1bdef15c1895a6efefcdd1ea96c840e9
Author: rajulocal
Date: Sun Aug 7 14:09:01 2011 -0400

version 2

commit 1306cba057d6cac06ffd39b9234ce72967dc44f8
Author: rajulocal
Date: Sun Aug 7 14:08:35 2011 -0400

version 1


In order to extract the latest 12 versions of test.txt and store each into a different file, I do
$xtract_hist_git 12 test.txt
$ls m??_test.txt
m00_test.txt m02_test.txt m04_test.txt m06_test.txt m08_test.txt m10_test.txt m12_test.txt
m01_test.txt m03_test.txt m05_test.txt m07_test.txt m09_test.txt m11_test.txt

m00_test.txt is the latest copy of test.txt, m01_test.txt is the latest but one copy, m02_test.txt is the latest but two copy etc.,

xtract_hist_git is this little script
$cat ~/bin/xtract_hist_git           
#! /bin/sh
#
# Author : Kamaraju S. Kusumanchi
# Email : kamaraju at gmail dot com
# File : ~/bin/xtract_hist_git
# Date (last modified) : Sun Aug 7 14:28:14 EDT 2011

revs=$1
file=$2

for i in `seq -w 0 $revs`
do
git checkout master~$i $file
mv $file m${i}_$file
done
git checkout master $file

Tuesday, June 14, 2011

get all the odd lines in a file

sed can be used to get all the odd or even lines in a file. Consider, for example,

$cat linenums.txt
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
line 10

To print all the odd lines

$sed -n '1~2p' linenums.txt
line 1
line 3
line 5
line 7
line 9

$sed -n '2~2p' linenums.txt
line 2
line 4
line 6
line 8
line 10

Saturday, February 26, 2011

login into a directory after sshing into a machine

To login into a machine via ssh and cd into a particular directory immediately afterwards, use
ssh -t user@machine.name 'cd ~/destination/directory && exec /bin/bash --login -i'
The -t option forces the ssh to open a pseudo-terminal. Without the -t option, ssh does not open the pseudo-terminal when a command is specified.

Commands can also contain variable names. For example,
export DYNAMIC=${PWD#$HOME/}
ssh -t user@machine.name "cd ~/$DYNAMIC && exec bash --login -i"
Other possible uses of the -t option

To see the output of top of a remote machine, use
ssh -t user@remote.machine.name top

Wednesday, February 02, 2011

Add a number to a variable in shell script

Consider the following shell script
$cat add_variables_02.sh
#! /bin/sh
ov=10;
nv=$((ov+3)); echo $nv
((nv=ov+3)); echo $nv
nv=$ov+3; echo $nv
nv=`expr $ov+3`; echo $nv
nv=`expr $ov + 3`; echo $nv
Execute in a shell
$bash add_variables_02.sh 
13
13
10+3
10+3
13
The first two methods nv=$((ov+3)) or ((nv=ov+3)) are faster than the fifth method nv=`expr $ov + 3` as the former uses bash's own feature and the later runs an external command in a subprocess.

Also, note that spaces are needed before and after the '+' character when expr is used.

Tested in Debian Wheezy machine using bash 4.2-1

Further reading
  1. info coreutils 'expr invocation'
  2. man expr

Special thanks to the anon 2011-08-24 5:06 AM for providing the first two methods.

Followers