#!/usr/bin/env python
#-*- coding: utf-8 -*-
#==============================================================================
"""clearSshKnownHostLine.py

Author: Karl Norby <knorby@uchicago.edu>

Given a list of line numbers in the ssh known_hosts file, this script
removes them.

Under a BSD Style License.
"""
#==============================================================================
import os.path
#==============================================================================
KNOWN_HOSTS_FILE = os.path.expanduser("~/.ssh/known_hosts")
#==============================================================================
def removeLines(lineNums):
    hosts = open(KNOWN_HOSTS_FILE, "r").read().splitlines()
    #does some type assurance. 
    if isinstance(lineNums, int):
        lineNums = [lineNums]
    lineNums = list(lineNums)
    lineNums.sort()
    lineNums.reverse()
    for lineNum in lineNums:
        hosts.pop(lineNum-1)
    knownHostsFile = open(KNOWN_HOSTS_FILE, "w")
    for line in hosts:
        print >> knownHostsFile, line
    knownHostsFile.close()
#==============================================================================
def main():
    import sys
    removeLines(map(int, sys.argv[1:]))
#==============================================================================
if __name__ == "__main__":
    main()
