Month: October 2017

Publish Post on Page through Facebook API

So, here comes very interesting task. As I mentioned in my previous blog about #LuvLdh Event, this blog is related to that only.

Me and my friend Amrit was given a task to make a web app which will allow user to login through facebook, upload images or document and automatically publish it on page.

This blog will cover very small part of the problem i.e. how user can publish post on a page. We used Facebook SDK for Python.

We followed following links to  solve it.


Install facebook module of Python as given in

Generate Access Token

  1. Login to facebook account.
  2. In new tab, browse to
  3. Go to “Tools and Support” and then “Graph API Explorer”.
  4. Click “Get Token” and then “Get User Access Token”. It will prompt out permission options.
  5. In order to publish post on your account, Check box “publish actions” permission and then click “Get Access Token”. It will ask for whom should see the post(preferably public). To know more about permissions browse to

Congratulations, you have generated your long string of access token.

import facebook

graph = facebook.GraphAPI(access_token="your_generated_token", version=2.10)


The above command will create new object “graph” with your own access token.

graph.put_photo(image=open('img.jpg', 'rb'),
                message='Look at this cool photo!')

This will publish photo on your account. Likewise to publish text or anything follow given links.

Publish Post as a Normal User into a Page.

Now recreate Token with more permissions. This time check box

Scopes user_location, user_likes, user_events, user_photos, user_about_me, user_posts, email, publish_actions, manage_pages, pages_show_list, publish_pages, public_profile


Here “public_profile” means to view your post to public. This permission is must. This is obtain when we click “get access token” it ask for to show the post to [public, friends,  only me]. Select Public. It took complete one day to debug the problem.:P

Now check the Page_id of the page in which you want to publish. It is displayed in URL or you also see in the “About” Section of the page.

Create the new object just like “graph” object created with new access token.

graph.put_wall_post(message=’Really Worked!!’, profile_id=’your_page_id’)

Likewise, an admin of the page can also publish the post. Rather an admin can select any option among [public, friends,  only me].

Make sure in the General settings of the page there is no bar for a normal user and everything is set to public(if applicable).

Now check post to the page Community section. You will be able to see the post.:)

For any kind of doubt feel free to comment.



This blog is an integration of small small tasks done few days back.

Steps to install Google chrome in Ubuntu.

sudo apt-get install libxss1 libappindicator1 libindicator7
sudo dpkg -i google-chrome*.deb


Following this link I tried to make Github Pages

LuvLdh Website

Then TCC Team created website for the event #LuvLdh located at

Source code

You can clone the source code from

The actual theme was picked from

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.


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

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



Command which tells which ports are open by firewall is.

$ nmap


Starting Nmap 7.01 ( ) at 2017-10-13 14:09 IST
Nmap scan report for localhost (
Host is up (0.000077s latency).
Not shown: 991 closed ports
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* LISTEN 14277/master
tcp 0 0 ESTABLISHED 2956/firefox
tcp 0 0 ESTABLISHED 2956/firefox
tcp 0 0 ESTABLISHED 2956/firefox
tcp 0 0 ESTABLISHED 2956/firefox
tcp 0 0 ESTABLISHED 2956/firefox
tcp 0 0 TIME_WAIT –
tcp 0 0 ESTABLISHED 2956/firefox
tcp 0 0 TIME_WAIT –
tcp 0 0 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! 🙂


Test PR Before Merge in Github

Today, I got a task to test the PR 

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 (fetch)
amisha (push)
origin (fetch)
origin (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.


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.


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


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 . 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.

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 = ""
set imap_pass = "password"

set smtp_url = "smtp://"
set smtp_pass = "password"

set from = ""
set realname = "Sender Name"

set folder = "imaps://"
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.