Search This Blog

Thursday, July 20, 2017

One line Simple FTP Server

Hey Guys,

As always this is an accidental discovery while working on some automation project.
How to create a FTP server in one line of command.

Here we go,
I will assume that you already have Python on your system :)

    python -m pyftpdlib -p 21 -w -d /some/dest/directory -D -n <Your IP>

If you wish to see the console output later in a file and push the process to background then,

    python -m pyftpdlib -p 21 -w -d /some/dest/directory -D -n <Your IP> > ftp.log 2>&1 &

you can ofcourse change the port from port 21 to some other.

Looks simple isn't it ???? 

Monday, May 22, 2017

Apply SSL Certificate via HAproxy

Hi Again,

Just thought to share, how a SSL certificate is applied to HAproxy LB

First we need to generate “pem” file which includes private key  from “pfx”. It promts for password

# openssl pkcs12 -in dummy.pfx -out dummy.pem  -nodes

Note: pem file which includes private key is important and not just pem file without private key content

Copy this "pem" file to a specific location, say like

# cp dummy.pem /etc/haproxy/ssl/

Configure SSL cert to Haproxy  - In the front end section

frontend www-https
    mode http
    option forwardfor
    option http-server-close
    bind ssl crt /etc/haproxy/ssl/dummy.pem
    reqadd X-Forwarded-Proto:\ https
    default_backend web-backend

and Restart haproxy service

# service haproxy restart

Ola!!!!   When you access your application you must see something like this on the address bar J

Thursday, March 9, 2017

Centos - How to undo a package Installation - Yum 

Hi Friends,

Yesterday someone in my server, accidently updated libvirt packages while trying to install something else.

Puff !!!
All my VMs started failing on reboot
Identified that verions of libvirt and qemu does nt work anymore.

Ona  quick research learnt this


It is a life saver

I initially tried "yum downgrade" - but it usually failed in downgrading dependency.

So let me explain you the magic.

Step 1: Find the history

# yum history
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
ID     | Login user               | Date and time    | Action(s)      | Altered
     8 | root <root>              | 2011-10-03 14:40 | Install        |    1   
     7 | root <root>              | 2011-09-21 04:24 | Install        |    1 ##
     6 | root <root>              | 2011-09-21 04:23 | Install        |    1 ##
     5 | root <root>              | 2011-09-16 13:35 | Install        |    1   
     4 | root <root>              | 2011-09-16 13:33 | Erase          |    1   
     3 | root <root>              | 2011-09-14 14:36 | Install        |    1   
     2 | root <root>              | 2011-09-12 15:48 | I, U           |   80   
     1 | System <unset>           | 2011-09-12 14:57 | Install        | 1025  

Step 2: Revert the change

# yum history undo 8

Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
Undoing transaction 8, from Mon Oct  3 14:40:01 2011
    Install screen-4.0.3-16.el6.i686
Resolving Dependencies
--> Running transaction check
---> Package screen.i686 0:4.0.3-16.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved
 Package          Arch       Version            Repository              Size
 screen           i686       4.0.3-16.el6       @rhel-6-server-rpms     783 k


  screen.i686 0:4.0.3-16.el6
Hope this helps someone. Ola ... have a great day

Wednesday, October 15, 2014

OpenStack - Do you know how to evacuate Instances from server which has gone down - "nova host-evacuate"

Hello again,

Recently my server running openstack-compute had to be brought down for maintenance (which was running some 60 VMs). This is when i learnt how to use "nova evacuate"

This is a cool feature in openstack using which you can get back instances from the server which has gone down. Ya, but it requires some prior configuration.

The important stuff is how you keep you root disk. Openstack allows three different configurations to fetch the root disk.

1. Root on volume (EBS volumes) - By this instance can be brought up in other server with the same EBS(root) volume.

2. Instances folder in shared mode using NFS, GlusterFS, etc - Basically the disk file needs to be accessed across all nodes, i.e mount point for instances folder must be shared across all nodes. GlusterFS appears to work super cool in this method.

3. Disks are cleaned but instances are recreated from fresh disk from glance - Even though the disk is ultra new, instance information (like IP, instance Id,etc.,) are retained just as it was before evacuation.

Once the server is down, all you need to do is issue the following command

# nova host-evacuate --target_host <server where the VMs need to be transferred> --on-shared-storage <server which got down>


# nova host-evacuate --target_host old_node --on-shared-storage new_node

I have added a video demonstration of the entire flow. I hope this helps someone. Have a great day

                                                  :) :) :) :) :) :) :) :)

Tuesday, October 14, 2014

Cool aliases that i found from my friend's GitHub

Hey Guys,
If you are a linux fan, you probably will love these aliases (short cuts or short forms of commands)

If you are tired to copy it to your system, just use the script below to install these aliases :)

These save a lot of time for developers..

Thanks to Rushi Agarwal

See ya all.

Monday, August 18, 2014

Really Cool Python debugging Tool - "PUDB"

Hi once again,
I came across this really cool python debugging tool called "PUDB". Now i would rather say am using this tool for every code trace on openstack.

" PuDB is a full-screen, console-based visual debugger for Python. Its goal is to provide all the niceties of modern GUI-based debuggers in a more lightweight and keyboard-friendly package. PuDB allows you to debug code right where you write and test it--in a terminal. If you've worked with the excellent DOS-based Turbo Pascal or C tools, PuDB's UI might look familier. "

How to install PUDB

# sudo pip install pudb

How to debug

The place you feel debugger needs to start, insert the following piece of code  

import pudb;pu.db 

How does it look like ?

PUDB has the following panes
  • Debugger pane
  • Console Pane
  • Variables Pane
  • Stack Pane
  • BreakPoints pane
Basic Key Navigations
  • Use Left,Right,Up,Down arrow keys to navigate between the panes.
  • press 's' for step into a method
  • press 'n' for executing next line
  • press 'b' key to toggle break points
  • press 'r' for completing the method
  • press 'q' to quit debugger
  • press '?' for help and more key navigations
  • ctrl + x to navigate between debugger pane and console pane.
  • TAB key acts as auto-suggest/auto-fill while in console pane. It also brings down methods available.
Credits to my friend Rushi Agarwal - who pointed out to me about this tool while i was struggling to debug a piece of code with pdb :)

Tuesday, July 8, 2014

"apt-mirror" does not understand non standard port

Today when i was setting up configuration for apt-mirror, i faced this problem of apt-mirror not recognizing non-standard port. I thought i would post the fix for the bug, as this might be helpful for others as well

Step 1: Edit the apt-mirror script

# nano /usr/bin/apt-mirror

Step 2: Look for the line

$uri =~ s&:\d+/&/&; # and port information

Change it to,

$uri =~ s&:\d+/$&/&; # and port information

Step 3: Run your apt-mirror command

There you go !!! You have your mirror fetching from non-standard port.