Well, the era of Quad Core computing is approaching fast. But everybody can’t just enjoy the computing powers of those high end processors due to very high cost and maintenance(power supply and heat) problems. If you are a programmer and and use linux, then you can at least have a Quad Core Konsole. I found a small application here which can change the way you program and can make programming very easy and fast. It has four konsoles tiled in one single window and comes with very easy navigation controls. You may want to give it a try. Below is a screenshot of QuadKonsole.
Tips – Tricks
Hack: Mange Fluctuating Wireless
I am trying this small script with a so called gui 😉 . This helps managing my wireless in the extreme conditions. Just a shell script. Run the script as root otherwise it’ll not work.
Get the script here or copy the code below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #!/bin/bash # # Author - Kulbir Saini, IIIT Hyderabad. # Home - http://saini.co.in/ # KWirelessManger - Just for fun.(It works ... its not just fun). # #Give the popup life. POPUP_LIFE="10" #kdialog --passivepopup "Welcome to 'KWirelessManager'" ${POPUP_LIFE} & #Give your device name for proceeding further. It may be one of wlan0, ra0, eth0, ipw2200 etc... WLAN_DEVICE="wlan0" #Give your WLAN host to be connected. WLAN_HOST="IIIT WLAN" CONNECTED=0 while [[ 1 ]]; do iwlist ${WLAN_DEVICE} scanning 2> /dev/null > /tmp/iwlist.aps grep -e "Cell" /tmp/iwlist.aps | tr " " "\t" | cut -f15 > /tmp/iwlist.apadd ACCESS_POINTS_IN_RANGE=`wc -l /tmp/iwlist.apadd` for ACCESS_POINT_ADDRESS in `cat /tmp/iwlist.apadd` do iwconfig ${WLAN_DEVICE} ap ${ACCESS_POINT_ADDRESS} #kdialog --passivepopup "Connceting to Access Point ${ACCESS_POINT_ADDRESS} ..." ${POPUP_LIFE} & echo "Connceting to Access Point ${ACCESS_POINT_ADDRESS} ..." WLAN_STATUS=`service network restart | tail -1 | grep "FAILED"` if [[ ${WLAN_STATUS} == "" ]]; then #kdialog --passivepopup "You are connected to ${WLAN_HOST}." ${POPUP_LIFE} & echo "You are connected to ${WLAN_HOST}." CONNECTED=1 break else #kdialog --passivepopup "Failed to connect to the Access Point ${ACCESS_POINT_ADDRESS} :(" ${POPUP_LIFE} & echo "Failed to connect to the Access Point ${ACCESS_POINT_ADDRESS} :(" CONNECTED=0 fi done if [[ ${CONNECTED} == 1 ]]; then sleep 180; fi done |
Please suggest any optimization and do tell if u like it.
Hack: Mail Filter – Shell Script
This is an attempt by me to filter mails on a Linux machine. You can run this file on your home directory at mail server and it will help you to sort mails on the basis of
- From which user the mail has come or from which domain it came,
- to which user or domain mail was sent and
- the keywords in the subject part of the mail.
Actually its very slow as shell is very slow , I cant help it . It scan your entire mbox file in the home directory by default. Copy the code and paste in a file say filter.sh and change its permissions to executable. Place it in you home directory at the mail server and run.
Example
You want to see all mails from username@gmail.com just run and it will ask for input,
press 1
From: username [Enter]
It will display all the mails from that are lying there in your mbox one by one.
Get the script here or copy the code below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | #!/bin/bash ################################# # Author - Kulbir Saini # # Home - http://sain.ico.in/ # ################################# #shell script to filter mails. echo -e -n "\033[32mWelcome to the mail filter system \nWhat do you want to do? \nCheck mails on basis of \n1) Sender... \n2) Receiver... \n3) Subject... \n4) Quit... \nPress(1,2,3,4): \033[0m" read int <&2 while [[ 1 ]];do while [[ 1 ]];do count=0; line="" if [[ $int == 1 ]];then echo -n -e "\033[32mFrom:\033[0m " read from <&2 i=0 clear while read line ;do loopbreak=0; nextmessagestatus=1; mailtostatus=1; mailsubstatus=1; stat=1; toecho=`echo $line | grep -E "^From:+" | grep -E "${from}"` if [ "$toecho" != "" ];then i=`expr $i + 1` echo -e "${toecho}" while read line ; do mailto=`echo $line | grep -E "^To:+"` mailsub=`echo $line | grep -E "^Subject:+"` if [[ "$mailto" != "" ]] && [[ $mailtostatus == 1 ]];then echo $mailto mailtostatus=0 fi if [[ "$mailsub" != "" ]] && [[ $mailsubstatus == 1 ]];then echo $mailsub mailsubstatus=0 fi if [[ $mailtostatus == 0 ]] && [[ $mailsubstatus == 0 ]] && [[ $stat == 1 ]];then echo -e "\033[33mStarting of the Message${i}:\033[0m" stat=0 fi fromstatus=`echo $line | grep -E "^X-UID:+"` if [[ $fromstatus != "" ]];then while read line; do loopstatus=`echo $line | grep -E "^From +"` if [[ $loopstatus != "" ]];then loopbreak=1 break fi echo $line done if [[ $loopbreak == 1 ]];then echo -e -n "\033[33mEnd of the Message${i}.\nDisplay next message(y/n):\033[0m" read messagestatus <&2 if [[ "$messagestatus" == "y" ]];then clear else nextmessagestatus=0 fi break fi fi done count=`expr $count + 1` fi if [[ $nextmessagestatus == 0 ]];then break fi done if [[ $count == 0 ]];then echo -e "\033[32mNo mail(s) From: ${from}.\n\033[0m" else echo -e "\033[32mTotal $count mail(s) From: ${from}.\n\033[0m" fi elif [[ $int == 2 ]];then echo -n -e "\033[32mTo: \033[0m" read to <&2 i=0 clear while read line ;do loopbreak=0; nextmessagestatus=1 toecho=`echo $line | grep -E "^To:+" | grep -E "${to}"` if [[ "$toecho" != "" ]];then echo -e "$toecho" i=`expr $i + 1` while read line; do tostatus=`echo $line | grep -E "^X-UID:+"` if [[ $tostatus != "" ]];then echo -e "\033[33mStarting of the Message${i}:\033[0m" while read line; do loopstatus=`echo $line | grep -E "^From +"` if [[ $loopstatus != "" ]];then loopbreak=1 break fi echo $line done if [[ $loopbreak == 1 ]];then echo -e -n "\033[33mEnd of the Message${i}. \nDisplay next message(y/n): \033[0m" read messagestatus <&2 if [[ $messagestatus == "y" ]];then clear else nextmessagestatus=0 fi break fi fi done count=`expr $count + 1` fi if [[ $nextmessagestatus == 0 ]];then break fi done if [[ $count == 0 ]];then echo -e "\033[32mNo mail(s) to: ${to}.\n\033[0m" else echo -e "\033[32mTotal $count mail(s) To: ${to}.\n\033[0m" fi elif [[ $int == 3 ]];then echo -n -e "\033[32mSubject:\033[0m " read subject <&2 clear i=0 while read line ;do loopbreak=0; nextmessagestatus=1 toecho=`echo $line | grep -E "^Subject:+" | grep -E "${subject}"` if [[ "$toecho" != "" ]];then echo "$toecho" i=`expr $i + 1` while read line; do substatus=`echo $line | grep -E "^X-UID:+"` if [[ $substatus != "" ]];then echo -e "\033[33mStarting of the Message${i}:\033[0m" while read line ; do loopstatus=`echo $line | grep -E "^From +"` if [[ $loopstatus != "" ]];then loopbreak=1 break fi echo $line done if [[ $loopbreak == 1 ]];then echo -e -n "\033[33mEnd of the message${i}. \nDisplay next message(y/n): \033[0m" read messagestatus <&2 if [[ $messagestatus == "y" ]];then clear else nextmessagestatus=0 fi break fi fi done count=`expr $count + 1` fi if [[ $nextmessagestatus == 0 ]];then break fi done if [[ $count == 0 ]];then echo -e "\033[32mNo mail(s) with Subject: ${subject}.\n\033[0m" else echo -e "\033[32mTotal $count mail(s) with Subject: ${subject}.\033[0m\n" fi elif [[ $int == 4 ]];then echo -e "\033[32mThank you for using this utility. \nPlease visit again.\033[0m" exit else echo -e "\033[32mI could not understand that. \nPlease try again.\033[0m\n" fi echo -e -n "\033[32m1) Sender... \n2) Receiver... \n3) Subject... \n4) Quit... \nPress(1,2,3,4):\033[0m " read int <&2 break done < mbox done |
How To: Troubleshoot SCP Command
Some times we face problems in transferring the data from one machine to other machine using scp. Actually the scp command is executed successfully but the data is not transferred. As the .bashrc and not the .bash_profile file of the system to which the data is being transferred is executed. If the .bashrc of the remote system contains any command or executable which output some data to the standard output then that command is executed and the output is flushed on the local machine and the scp command is terminated and data is not transferred.
For example if the remote machine has any ‘echo’ or ‘nfrm’ command in .bashrc file, the scp of the data will not be possible.
Also suppose the remote machine has a lines in .bashrc like this
./test.sh |
where test.sh contains the data as below:-
1 2 | #/usr/bin/sh echo "Kulbir Saini" |
Then also the scp will not be possible.
So if you are facing such problems please try to remove such lines from your .bashrc file and scp the data you want.
Anyway you can keep those lines in your .bash_profile because it is not executed while transferring the data.
Please report any other cases in which scp is not possible.
How To: Yahoo Messenger on Teaching Lab Machines
Though the pcs in the labs are not having any support for applications except terminal or command line, Linux version of yahoo messenger can be opened there. This is a step by step procedure.
Step 1
Open two terminals and through one of them logon on to your mirage server account because that supports the Gaim(Linux version of yahoo messenger).
Step 2
Now I will call the terminal in which you are logged into mirage as remote machine and the terminal of the machine at which you are working as local machine.
At your local machine execute these commands.
1 2 | [kulbir@localhost ~] xhost + [Enter] access control disabled, clients can connect from any host |
The messege displayed above should appear otherwise you may have problems.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [kulbir@localhost ~] /sbin/ifconfig [Enter] eth0 Link encap:Ethernet HWaddr 00:11:2F:57:C5:9D inet addr:372.12.226.25 Bcast:122.12.226.123 Mask:212.223.345.138 UP BROADCAST RUNNING MULTICAST MTU:1520 Metric:1 RX packets:136851 errors:0 dropped:0 overruns:0 frame:0 TX packets:82928 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:71106959 (67.8 Mb) TX bytes:40997603 (39.0 Mb) Interrupt:10 lo Link encap:Local Loopback inet addr:122.4.4.1 Mask:252.2.2.1 UP LOOPBACK RUNNING MTU:11436 Metric:1 RX packets:46123 errors:0 dropped:0 overruns:0 frame:0 TX packets:46123 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22001021 (20.9 Mb) TX bytes:22001021 (20.9 Mb) |
The address against inet_addr in 3rd line is the IP address of your local machine.
Step 3
Now switch to your remote machine terminal and issue the following commands…
[kulbir@server ~] export DISPLAY=[IP address]:0.0 [Enter] |
e.g.
[kulbirsaini@server ~] export DISPLAY=222.26.36.5:0.0 [Enter] |
If no error comes, means things are going fine.
[kulbir@server ~] xterm [Enter] |
Now also if no error comes and a new teminal appears then you are ready to open the gaim.
Issue this command on the new appeared terminal
[kulbir@server ~] gaim [Enter] |
yahoo messenger will appear and now you are ready to chat.
Add your account to the messenger and chat 😀