Common Ubuntu Commands

The purpose of this blog is to inculcate the readers with some of the important network related commands and other command used on daily basis.

Rename multiple files in the same directory with extension phps to php.

$ rename ‘s/.phps$/.php/’ *.phps

History Command in Ubuntu

$history  //This command maintains history of the commands you applied

The output of this command displays serial number and command only. What if you want to know when that command is applied and at what time? What to do so that your history command always display date and time also?

Here is the answer of all questions.

HISTTIMEFORMAT="%d/%m/%y %T "

Or, to make the change permanent for the current user:

echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

Then

history

Command which tells which ports are open by firewall is.

$ nmap  127.0.0.1

Output

Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-13 14:09 IST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000077s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop3
139/tcp open netbios-ssn
143/tcp open imap
445/tcp open microsoft-ds
3306/tcp open mysql
5432/tcp open postgresql

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Command to print network connections, routing tables.

$ sudo netstat -nutlap | grep 25

tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 14277/master
tcp 0 0 172.20.10.3:47056 198.252.206.25:443 ESTABLISHED 2956/firefox
tcp 0 0 172.20.10.3:47596 198.252.206.25:443 ESTABLISHED 2956/firefox
tcp 0 0 172.20.10.3:47424 198.252.206.25:443 ESTABLISHED 2956/firefox
tcp 0 0 172.20.10.3:47618 198.252.206.25:443 ESTABLISHED 2956/firefox
tcp 0 0 172.20.10.3:47576 198.252.206.25:443 ESTABLISHED 2956/firefox
tcp 0 0 172.20.10.3:59342 54.251.241.152:443 TIME_WAIT –
tcp 0 0 172.20.10.3:47530 198.252.206.25:443 ESTABLISHED 2956/firefox
tcp 0 0 172.20.10.3:38490 54.251.58.133:443 TIME_WAIT –
tcp 0 0 172.20.10.3:51642 198.252.206.25:443 ESTABLISHED 2956/firefox
tcp6 0 0 :::25 :::* LISTEN 14277/master

SMTP Secure listen to port 465 and TLS listen to port 587

Command to open port

sudo ufw allow <port number>

eg:- sudo ufw allow 8082

To know more about Ubuntu commands read blogs under the same category.

Stay tuned! 🙂

 

Advertisements

Test PR Before Merge in Github

Today, I got a task to test the PR https://github.com/GreatDevelopers/TCC/pull/2 

Steps to test the PR in separate branch before merge

1. Create and switch to new branch

$git checkout -b <new_branch_name> <remote_name/existing_branch_name>

Here second parameter is optional. If not mentioned then it will create a new branch exact copy of current branch.

In second parameter you have to give two values remote_name and branch name existing in that remote.

If no remote name is mentioned then by default it will account remote_name=origin.

If I am having more than one remotes as shown below.

$ git remote -v
amisha https://github.com/amisha2016/TCC (fetch)
amisha https://github.com/amisha2016/TCC (push)
origin https://github.com/GreatDevelopers/TCC.git (fetch)
origin https://github.com/GreatDevelopers/TCC.git (push)

Now, I want to create a new branch exact copy of existing branch of remote amisha.

$git checkout -b new amisha/master

2. Pull the PR to the new branch

$git pull <remote_URL> <branch_name>

Here remote_URL is the URL of the repository who has opened/send that PR and branch_name is the name of branch where he has committed that changes. In the image the branch _name is HTML_files.

bran

But in my case the situation was not that easy. Actually the person who has send that PR has deleted the fork of that repository.

bran1

Here branch name is unknown repository. So, the solution is below.

$git checkout master

$ git fetch -f origin pull/2/head:new

Second command means to fetch the changes from PR #ID(here ID is 2) to the newly created branch new. Remember this command won’t work if you are in the same branch where changes to be applied(here branch name is new). That is why I checkout to master branch initially.

My senior Mandeep Singh helped in it.

Now test the PR and enjoy while merging 😛

Connect to Wifi through Terminal

Today, I learned various new commands of ubuntu.

Command to connect to wifi through terminal.

nmcli d wifi connect <WiFiSSID> password <WiFiPassword>

If you have to login for wifi through browser. You can follow steps listed below.

$nmcli d wifi connect <WifiSSID>                              //WifiSSID means name of Wifi

Then install elink through

$sudo apt install elink

If already done then type

$elink

Enter URL of login page and password. Congratulation you are connected through Wifi from terminal. It may seem tedious task but if you know the real power of terminal than this long procedure is worth in.

Inspite of this I used to online tool to edit the properties  like aspect ratio, height and width of image through online tool http://resizeyourimage.com/ . I have used it to fill GATE examination form.

 

 

 

 

 

 

 

 

 

 

 

 

Mutt- Mail User Agent

Mutt is apowerful program for reading and sending electronic mails.

I followed two references to install mutt.

http://nickdesaulniers.github.io/blog/2016/06/18/mutt-gmail-ubuntu/

https://www.linuxquestions.org/questions/linux-newbie-8/unable-to-configure-mutt-email-client-4175513968/

Mutt Installation

$sudo apt install mutt

$ sudo touch $MAIL
$ sudo chmod 660 $MAIL
$ sudo chown `whoami`:mail $MAIL

Create the ~/.muttrc file

set imap_user = "userName@gmail.com"
set imap_pass = "password"

set smtp_url = "smtp://userName@smtp.gmail.com:587/"
set smtp_pass = "password"

set from = "userName@gmail.com"
set realname = "Sender Name"

set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed="+[Gmail]/Drafts"

set header_cache=~/.mutt/cache/headers
set message_cachedir=~/.mutt/cache/bodies
set certificate_file=~/.mutt/certificates

set move = no

For furthur usage of Mutt keep in touch with me.

 

 

 

Learn Javascript

Hie everyone and welcome to the Javascript Tutorial. Here I will not hardcode each and every thing. Rather will introduce with the important concepts which you should know about the respective language.

We will start with the concept debugger. What do you mean by debugger in lay-men language. Think about it!

So, bug means fault and debug means to correct fault. Here, debugger is the program(code) which will help to correct errors. I think it is as easy as to understand.

In JS you can debug code in various ways. Here they are illustrated in two ways.

  1. Using Debugger Keyword
  2. Using Console.log

Using Debugger

<!DOCTYPE html>
<html>
<head>
</head>

<body>

<p id=”demo”></p>

<p>With the debugger turned on, the code below should stop executing before it executes the third line.</p>

var x = 15 * 5;
document.getElementById(“demo”).innerHTML = x;
debugger;
x = 15 + 5;
document.getElementById(“demo”).innerHTML = x;
debugger;
x = 15 + 7;
document.getElementById(“demo”).innerHTML = x;

</body>
</html>

The execution will be stopped whenever the keyword debugger will be encountered. In the above code it will stop three times. You can check value of x at every breakpoint.

Using console.log

<!DOCTYPE html>
<html>
<body>

<h2>My First Web Page</h2>

<p>
Activate debugging in your browser (Chrome, IE, Firefox) with F12, and select “Console” in the debugger menu.
</p>

a = 5;
b = 6;
c = a + b;
console.log(c);

</body>
</html>

You will see the value of variable c in the console window. In firefox and  chrome open console window with F12.

Another Case

While doing experiments on JS forms I got to know very interesting thing.

<!DOCTYPE html>
<html>
<body>

<form name=”myForm” action=”/action_page_post.php”
onsubmit=”return false” method=”post”>
Name: <input type=”text” name=”fname”>
<input type=”submit” value=”Submit”>
</form>

</body>
</html>

In the “onsubmit” attribute of <form> tag we call some function in the value part. But if return false Boolean value as shown above then the form would not submit. We can use this benefit in some condition like if any field of the form is empty by adding JS code as illustrated below.

<!DOCTYPE html>
<html>
<head>

function validateForm() {
var x = document.forms[“myForm”][“fname”].value;
if (x == “”) {
alert(“Name must be filled out”);
return false;
}
}

</head>
<body>

<form name=”myForm” action=”/action_page_post.php”
onsubmit=”return validateForm()” method=”post”>
Name: <input type=”text” name=”fname”>
<input type=”submit” value=”Submit”>
</form>

</body>
</html>

 

That’s all for today. Thank-you for bearing me.:)

WordPress Installation

Well the purpose of this blog is clear from the title only. But it’s not just that. Actually, I want to make my OSM_installation_script just like it or better than it. Moreover, my mentor Dr. H. S. Rai asked me to do so.

I followed the below link to install WordPress.

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-lamp-on-ubuntu-16-04

When done all the steps mentioned on browsing to the http://localhost I got the  error illustrated below.

word_error

 

On googling to solve the error I got to know about installing the following package.

$ sudo apt install php7.0-mysql

It’s all done. Really it’s a job of 5 minutes.

 

 

Configure Apache2 Userdir

Scenario#- Consider a situation that you are a normal user rather a sudo user. You are desperate to run php program or anything require of Apache server. Ohho! You don’t have permission to edit anything in the directory /var/www/html(considering it as DocumentRoot Directory).

No worry, Apache2 provides here you a solution. You can even run everything from your home directory. It’s a job of 10 minutes. Believe me. 🙂

Steps Involved

$cd /home/username/
$mkdir public_html

Don’t make it with sudo as it will come under the owner root.

Change the permissions of certain directories.

 $ chmod 711 /home
 $ chmod 711 /home/username
 $ chmod 755 /home/username/public_html
 $ chmod o+r /home/username/public_html/index.html

Now, move to the directory mods-available

$cd /etc/apache2/mods-available
$sudo touch userdir.load           //don't replace userdir with your username
$sudo vim userdir.conf

Add the following code in it and save.

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root
        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS PROPFIND>
                     Require all granted
                </Limit>
                <LimitExcept GET POST OPTIONS PROPFIND>
                     Require all granted
                </LimitExcept>
        </Directory>
</IfModule>

 

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/userdir.conf userdir.conf
$ sudo ln -s ../mods-available/userdir.load userdir.load
$ sudo a2enmod userdir
$ sudo /etc/init.d/apache2 restart 

And you are done! Now you can browse to http://localhost/~username

Apart from it, I tried to set up Apache virtual hosts using the link.

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts

Expand Your Vision

Today, I read about the difference the two directories sites-available
and sites-enabled. Likewise of mods-available and mods-enabled.

sites-available contain all the configuration files that may be active
or not whereas sites-enabled as it name suggest contain enabled or
active sites. We should never edit files in the sites-enabled
directory as it may create problem.

To manage the two directories simultaneously, edit the files in the
sites-available and create symlink in the sites-enabled. After that
run the command

$a2ensite abc.com

Similarly, substitute a2ensite with “a2enconf” for configuration file
and for .load file with “a2enmod”

Apart from this I tried to create passport size photograph and arranged it in a sheet using the online tools.

https://www.persofoto.com/upload/passport-photo

http://online-passport-photo.com/

 

 

 

 

Heating Saturday

So, here the presentation day came again, though entirely different. Before the session begins almost all trainees and new comers including me were demotivated, frustrated from last two weeks. Keeping all in mind there was General Body Meeting(GBM) cum motivation seminar.

My senior Vigasdeep shared some adventurous experiences with us. The moral of all the experiences was to execute it what you want to do, don’t think of anybody.

In-spite of all these knowledge, my senior Mandeep Singh gave a presentation on the the topic Password Manager- Pass

You can view it’s documentation from here

https://www.passwordstore.org/

Osmosis in OSM

Till now, whatever changes I do in the OSM data, I again download the latest data from OSM or from http://extract.bbbike.org/ and import the fresh data in the database. But this is not the efficient approach.

So Today, I am going to introduce you with the term osmosis. You can read it in detail from here

Osmosis Installation

$sudo apt install osmosis

$osmosis -v                          //tell version

INFO: Osmosis Version 0.44.1

Now, it’s time to use the tool. The first command I tried to check the difference in the changesets of the two files was

$ osmosis –read-xml file=”ludh.osm” –read-xml file=”ludhiana.pbf” –derive-change –write-xml-change file=”planetdiff-1-2.osc”

Luckily, I encountered with an error.;)

SEVERE: Thread for task 1-read-xml failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: An output error has occurred, aborting.

After browsing on the internet then I came to know about my silly mistake. For the file ludhiana.pbf I was using the flag –read-xml instead of –read-pbf. The correct command is

$ osmosis –read-xml file=”ludh.osm” –read-pbf file=”ludhiana.pbf” –derive-change –write-xml-change file=”planetdiff-1-2.osc”

Similarly, we can explore osmosis a lot.