Handling Netrc Files Using Python

Introduction to .netrc file:

A .netrc file is used in Unix like operating systems primarily for two purposes:

    - To Define login credentials that can be used by commands and tools like ftp, curl and so on.

    - To Define macros that automates the file uploads

The. netrc is a hidden file and the default location of the. Netrc file is the $HOME directory.


.netrc file Introduction:


Login Credentials:


Login credentials to a host is specified in the format given below:


machine <HostName> login <UserName> password <password>


HostName - Name of the remote host


UserName - The user name of the login


password - Password of the user


e.g., machine mymacmachine.com login john password accessplease


Macro Definitions:


macdef macro_upload cd /repository bin put todaysbuild.gz quit


Once login is complete, the above line will, change the directory to  /repository and copy the file todaysbuild.gz

into the directory.


Processing .netrc file using Python:


As mentioned in the Introduction, the .netrc file is used by tools like ftp, curl and other tools.

Python provides a parser implementation to help parse the .netrc file through the netrc class.



.netrc file reader Example using Python:

#import the netrc module

import netrc


netrc           = netrc.netrc()

remoteHostName  = "mymacmachine.com"


authTokens = netrc.authenticators(remoteHostName)


# Print the access tokens for a specific account

print("Remote Host Name:%s"%(remoteHostName))

print("User Name at remote host:%s"%(authTokens[0]))

print("Account Password:%s"%(authTokens[1]))

print("Password for the user name at remote host:%s"%(authTokens[2]))


# print the macros present in the .netrc file

macroDictionary = netrc.macros



output of the .netrc file reader Example:

Remote Host Name:mymacmachine.com

User Name at remote host:john

Account Password:None

Password for the user name at remote host:accessplease

{'macro_upload': ['cd /repository bin put todaysbuild.gz quit\n']}

Copyright 2023 © pythontic.com