Wednesday, June 7, 2017

Enable direct ssh access to EC2 instance without .pem key

Enable password authentication by editing /etc/ssh/sshd_config: change PasswordAuthentication no to PasswordAuthentication yes

Restart ssh:

sudo /etc/init.d/ssh restart

systemctl  restart sshd (for RHEL7)

Wednesday, January 18, 2017

Installing GUI in AWS EC2 - RHEL7

There are three sections involved in the whole setup. Follow all the three sections explained below to successfully configure the GUI.

sudo yum -y update
Install the gnome GUI components using the following command.
sudo yum groupinstall -y "Server with GUI"
Issue the following commands to start the GUI during boot.
sudo systemctl set-default graphical.target

sudo systemctl default

Now we have all the essential GUI components installed on the server. In the next section, we will install the xrdp components to enable remote desktop connections.


Setting Up XRDP

Add the xrdp repository to your instance using the following command.
Install xrdp and tiger VNC server.
sudo yum install -y xrdp tigervnc-server
Setup SELINUX security using the following commands.
chcon --type=bin_t /usr/sbin/xrdp
chcon --type=bin_t /usr/sbin/xrdp-sesman
Start and enable the xrdp service.
Enable RDP port on the instance using the following firewall commands.
sudo firewall-cmd --permanent --add-port=3389/tcp
sudo firewall-cmd --reload
Set a password for ec2-user . This password will be used to connect to the RDP session.
Set password for root as you will be prompted for cloud user password for network proxy and color. Login as root and set the password.
Now we have the xdrp components and all instance level settings in the right place. Now let’s test out the RDP connection from an RDP client. In this tutorial, i am using windows RDP client.

Connecting The Instance Using RDP

Note: Make sure you have opened RDP port in your instance security group.
1. Open RDP client and type in the public IP of your instance and click connect.
2. If you get a warning message about remote identity, just click yes.
3. Now you will get a xrdp authentication window, enter the credentials and click ok.
Note: The username is “ec2-user” and the password is the password you set for ec2-user in step 6.
4. You will be prompted to enter the password again. Provide the password and proceed to the steps to configure the initial desktop.
5. If it prompts for “cloud user password” provide the root user password you set in step 7.
6. That it, you will get a GUI session as shown below. If you face any errors do let me know in the comment session.
Source : https://devopscube.com/how-to-setup-gui-for-amazon-ec2-rhel-7-instance/

Friday, November 18, 2016

What is the use of enumerate function in python

enumerate() is one of the built-in Python functions. It returns an enumerate object. In our case that object is a list of tuples (immutable lists), each containing a pair of count/index and value. 

>>> choices = ['pizza', 'pasta', 'salad', 'nachos']
>>> list(enumerate(choices))
=> [(0, 'pizza'), (1, 'pasta'), (2, 'salad'), (3, 'nachos')]
So, in the for index, item in enumerate(choices): expressionindex, item is the pair of count, value of each tuple: (0, 'pizza'), (1, 'pasta'), ...
We may easily change the start count/index with help ofenumerate(sequence, start=0)
for index, item in enumerate(choices, start = 1):
    print index, item
or simply with a number as the second parameter
for index, item in enumerate(choices, 1):
    print index, item
Try the following code:

>>>with open ('/etc/passwd') as f1:
...    ab = f1.readlines()
...     for i,v in enumerate(ab, 1):        
...      print i,v

Thursday, November 17, 2016

File handling in Python Cheatsheet: All modes

  • r

    Opens a file for reading only. The file pointer is placed at the beginning of the file. This is the default mode.
  • rb

    Opens a file for reading only in binary format. The file pointer is placed at the beginning of the file. This is the default mode.
  • r+

    Opens a file for both reading and writing. The file pointer will be at the beginning of the file. 
    (cannot truncate a file)
  • rb+

    Opens a file for both reading and writing in binary format. The file pointer will be at the beginning of the file.
  • w

    Opens a file for writing only. Overwrites the file if the file exists. If the file does not exist, creates a new file for writing.
  • wb

    Opens a file for writing only in binary format. Overwrites the file if the file exists. If the file does not exist, creates a new file for writing.
  • w+

    Opens a file for both writing and reading. Overwrites the existing file if the file exists. If the file does not exist, creates a new file for reading and writing.
    (can truncate a file)
  • wb+

    Opens a file for both writing and reading in binary format. Overwrites the existing file if the file exists. If the file does not exist, creates a new file for reading and writing.
  • a

    Opens a file for appending. The file pointer is at the end of the file if the file exists. That is, the file is in the append mode. If the file does not exist, it creates a new file for writing.
  • ab 

    Opens a file for appending in binary format. The file pointer is at the end of the file if the file exists. That is, the file is in the append mode. If the file does not exist, it creates a new file for writing.
  • a+

    Opens a file for both appending and reading. The file pointer is at the end of the file if the file exists. The file opens in the append mode. If the file does not exist, it creates a new file for reading and writing.
  • ab+

    Opens a file for both appending and reading in binary format. The file pointer is at the end of the file if the file exists. The file opens in the append mode. If the file does not exist, it creates a new file for reading and writing.


Important


Always make sure you explicitly close each open file, once its job is done and you have no reason to keep it open. Because - There is an upper limit to the number of files a program can open. If you exceed that limit, there is no reliable way of recovery, so the program could crash. - Each open file consumes some main-memory for the data-structures associated with it, like file descriptor/handle or file locks etc. So you could essentially end-up wasting lots of memory if you have more files open that are not useful or usable. - Open files always stand a chance of corruption and data loss.




Tuesday, November 15, 2016

Unable to connect to RHN network - ping works but nslookup fails

You should have proper entries in /etc/hosts and /etc/nsswitch.conf

Usually, you'll want its hosts line to look like(in /etc/nsswitch.conf):

hosts:      files dns
Antoher file to check is /etc/resolv.conf
check the permissions of all these files.

Read: http://superuser.com/questions/704785/ping-cant-resolve-hostname-but-nslookup-can

Monday, November 7, 2016

Installing Python modules using pip

pip is a package management system used to install and manage software packages written in Python. Many packages can be found in the Python Package Index (PyPI). Python 2.7.9 and later (on the python2 series), and Python 3.4 and later include pip (pip3 forPython 3) by default.

Install steps: https://pip.pypa.io/en/stable/installing/

Wget https://bootstrap.pypa.io/get-pip.py

Then run the following:

python get-pip.py

Install paramiko using pip


For reference, paramiko which we install has a hard dependency on cryptography which states:
For Debian and Ubuntu, the following command will ensure that the required dependencies are installed:
$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev
For Fedora and RHEL-derivatives, the following command will ensure that the required dependencies are installed:
$ sudo yum install gcc libffi-devel python-devel openssl-devel
#pip install paramiko


Friday, October 21, 2016

Reading and Writing Files in Python

Overview

In Python, you don't need to import any library to read and write files.

The first step is to get a file object.

The way to do this is to use the open function.

File Types

A file is usually categorized as either text or binary.

A text file is often structured as a sequence of lines and a line is a sequence
of characters.

The line is terminated by a EOL (End Of Line) character. 

The most common line terminator is the 
 , or the newline character. 

The backslash character indicates that the next character will be treated as a
newline. 

A binary file is basically any file that is not a text file. Binary files can
only be processed by application that know about the file's structure.

Open ( )

To open a file for writing use the built-i open() function. open() returns a
file object, and is most commonly used with two arguments.

The syntax is:
file_object = open(filename, mode) where file_object is the variable to put the
file object.

The second argument describes the way in which the file will be used.

Mode

The mode argument is optional; 'r' will be assumed if it’s omitted.

The modes can be:

'r' when the file will only be read

'w' for only writing (an existing file with the same name will be erased)

'a' opens the file for appending; any data written to the file is automatically
added to the end. 

'r+' opens the file for both reading and writing.
>>> f = open('workfile', 'w')
>>> print f
Next the file objects functions can be called. The two most common functions are
read and write.

Create a text file

Let's first create a new text file. You can name it anything you like,
in this example we will name it "newfile.txt".
file = open("newfile.txt", "w")

file.write("hello world in the new file
")

file.write("and another line
")

file.close()
If we now look in the newfile.txt, we can see the text that we wrote:
$ cat newfile.txt 
hello world in the new file
and another line

How to read a text file

To read a file, we can use different methods.

file.read( )

If you want to return a string containing all characters in the file, you can
use file.read().
file = open('newfile.txt', 'r')

print file.read()
Output:

hello world in the new file
and another line
We can also specify how many characters the string should return, by using
file.read(n), where "n" determines number of characters.

This reads the first 5 characters of data and returns it as a string.
file = open('newfile.txt', 'r')
print file.read(5)
Output:

hello

file.readline( )

The readline() function will read from a file line by line (rather than pulling
the entire file in at once).

Use readline() when you want to get the first line of the file, subsequent calls
to readline() will return successive lines.

Basically, it will read a single line from the file and return a string
containing characters up to 
.
file = open('newfile.txt', 'r')

print file.readline():
Output:

hello world in the new file

file.readlines( )

readlines() returns the complete ?le as a list of strings each separated by 
file = open('newfile.txt', 'r')

print file.readlines()
Output:

['hello world in the new file
', 'and another line
']

Looping over a file object

For reading lines from a file, you can loop over the file object. 

This is memory efficient, fast, and leads to simple code.
file = open('newfile.txt', 'r')

for line in file:
    print line,
Output:

hello world in the new file
and another line

file.write( )

The write method takes one parameter, which is the string to be written. 

To start a new line after writing the data, add a 
 character to the end.
file = open("newfile.txt", "w")

file.write("This is a test
")

file.write("And here is another line
")

file.close()

Close ( )

When you’re done with a file, call f.close() to close it and free up any system
resources taken up by the open file. 

After calling f.close(), attempts to use the file object will automatically fail.

File Handling Usages

Let's show some example on how to use the different file methods
To open a text file, use:
fh = open("hello.txt", "r")
To read a text file, use:
fh = open("hello.txt","r")
print fh.read()
To read one line at a time, use:
fh = open("hello".txt", "r")
print fh.readline()
To read a list of lines use:
fh = open("hello.txt.", "r")
print fh.readlines()
To write to a file, use:
fh = open("hello.txt","w")
fh.write("Hello World")
fh.close()
To write to a file, use:
fh = open("hello.txt", "w")
lines_of_text = ["a line of text", "another line of text", "a third line"]
fh.writelines(lines_of_text)
fh.close()
To append to file, use:
fh = open("Hello.txt", "a")
fh.write("Hello World again")
fh.close
To close a file, use
fh = open("hello.txt", "r")
print fh.read()
fh.close()

With Statement

Another way of working with file objects is the With statement.

It is good practice to use this statement. 

With the "With" statement, you get better syntax and exceptions handling. 
In addition, it will automatically close the file. The with statement provides a
way for ensuring that a clean-up is always used.
Opening a file using with is as simple as:
with open(filename) as file:
Let's take a look at some examples
with open("newtext.txt") as file: # Use file to refer to the file object
    data = file.read()
    do something with data
You can of course also loop over the file object:
with open("newfile.txt") as f:
    for line in f:
        print line,
Notice, that we didn't have to write "file.close()". That will automatically be
called.

With Examples

Let's show some examples on how we can use this in our every day programming.

Write to a file using With

Write to a file using the With statement
with open("hello.txt", "w") as f:
 f.write("Hello World")

Read a file line by line into an list

This will read the file hello.txt and save the content into "data".
with open(hello.txt) as f:
    data = f.readlines()

Splitting Lines

As a last example, we will show how to split lines from a text file.

The split function in our example, splits the string contained in the variable
data, whenever it sees a space character. 

You can split by whatever you wish, line.split(":") would split the line using
colons.
with open('data.txt', 'r') as f:
    data = f.readlines()

    for line in data:
        words = line.split()
        print words
Output:

Because multiple values are returned by split, they are returned as an array.
['hello', 'world,', 'how', 'are', 'you', 'today?']
['today', 'is', 'saturday']