I am working on developing a python cli network tool. the problem I am having on it, is that I have multiple options that you can select from and also a argparse section to tell what those options are. I have specifily used the tab key for spaceing when writing the script. however when I run the script I get this error message: ➤ python tiniGetHost.py -h File "tiniGetHost.py", line 27 if args.address: ^ TabError: inconsistent use of tabs and spaces in indentation
it seems no matter how I try to change it, it still keeps having the issue. also of note, it comes directly after args = parser.parse_args() which I am wondering it that is causing a problem with the following code. for the selection process, I am using a if / elif / else statement for the different socket options. I am hoping that I have coded this right, but and not sure do to lack of experience. here is the code so you all can see what I am talking about:
#!C:\Bin\Python35\python.exe
#
import sys
import sys, os
import argparse
import socket
# Command Line interface setup
def main():
try:
# Command Line arg parse
parser = argparse.ArgumentParser()
parser.add_argument("-a", "--address", default="address", help="Gets IP address from host name." )
parser.add_argument("-f", "--fqdn", default='address', help="Gets the FQDN address of server.")
parser.add_argument("-d", "--addrinfo", default='address', help="Gets the FQDN address of server.")
parser.add_argument("-l", "--local", default='address', help="gets inof on local host.")
parser.add_argument("-pr", "--proto", default='address', help="Translate an Internet protocol name to a constant suitable for passing as the (optional) third argument to the socket() function.")
parser.add_argument("-n", "--nameinfo", default='address', help="gets name and port on remote host.")
parser.add_argument("-Sn", "--servbyname", default='address', help="Translate an Internet service name and protocol name to a port number for that service.")
parser.add_argument("-Sp", "--servbyport", default='address', help="Translate an Internet port number and protocol name to a service name for that service.")
parser.add_argument("-t", "--timeout", default='address', help="Return the default timeout in seconds for new socket objects.")
parser.add_argument("-v", "--verbose", default='address', help="increase output verbosity")
args = parser.parse_args()
if args.address:
remoteServer = sys.argv[1]
remoteServerIP = socket.gethostbyname(remoteServer)
print (remoteServerIP)
elif args.fqdn:
remoteServer = sys.argv[1]
remoteServerIP = socket.getfqdn(remoteServer)
print (remoteServerIP)
elif args.addrinfo:
remoteServer = sys.argv[1]
remoteServerIP = socket.getaddrinfo(remoteServer)
print (remoteServerIP)
elif args.local:
remoteServerIP = socket.gethostname()
print (remoteServerIP)
elif args.proto:
remoteServer = sys.argv[1]
remoteServerIP = socket.getprotobyname(remoteServer)
print (remoteServerIP)
elif args.servbyname:
remoteServer = sys.argv[1]
remoteServerIP = socket.getservbyname(remoteServer)
print (remoteServerIP)
elif args.servbyport:
remoteServer = sys.argv[1]
remoteServerIP = socket.getservbyport(remoteServer)
print (remoteServerIP)
elif args.timeout:
remoteServer = sys.argv[1]
remoteServerIP = socket.getdefaulttimeout(remoteServer)
print (remoteServerIP)
elif args.verbose:
remoteServer = sys.argv[1]
remoteServerIP = socket.gethostbyaddr(remoteServer)
print (remoteServerIP)
else:
args.nameinfo
remoteServer = sys.argv[1]
remoteServerIP = socket.getnameinfo(remoteServer)
print (remoteServerIP)
except:
e = sys.exc_info()[0]
print (e)
except KeyboardInterrupt:
print ("You pressed Ctrl+C")
sys.exit()
except socket.gaierror:
print ("Hostname could not be resolved. Exiting")
sys.exit()
except socket.error:
print ("Couldn't connect to server")
sys.exit()
if __name__ == '__main__':
main()
Aucun commentaire:
Enregistrer un commentaire