ich will cli Argumente mit argparse bearbeiten. Nun funktioniert der beste Fall ganz gut. Aber wenn ich ein benötigtes Argument weglasse, möchte ich eigentlich eine kontrollierte Fehlermeldung haben und keine Exeption Wenn ich aktuell z.B. --action weg lasse bzw falsch schreibe kommt es zur Fehlermeldung:
Code: Alles auswählen
python -u "check_postgres.py" --host=localhost --dbname=db_name --dbuser=db_user --dbpass=test123 --acerer=test
Traceback (most recent call last):
File "check_postgres.py", line 29, in <module>
main()
File check_postgres.py", line 22, in main
args = parser.parse_args()
File "e:\Program Files\Python\Python36\lib\argparse.py", line 1730, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "e:\Program Files\Python\Python36\lib\argparse.py", line 1762, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "e:\Program Files\Python\Python36\lib\argparse.py", line 1997, in _parse_known_args
', '.join(required_actions))
File "e:\Program Files\Python\Python36\lib\argparse.py", line 2387, in error
self.print_usage(_sys.stderr)
File "e:\Program Files\Python\Python36\lib\argparse.py", line 2357, in print_usage
self._print_message(self.format_usage(), file)
File "e:\Program Files\Python\Python36\lib\argparse.py", line 2323, in format_usage
return formatter.format_help()
File "e:\Program Files\Python\Python36\lib\argparse.py", line 282, in format_help
help = self._root_section.format_help()
File "e:\Program Files\Python\Python36\lib\argparse.py", line 213, in format_help
item_help = join([func(*args) for func, args in self.items])
File "e:\Program Files\Python\Python36\lib\argparse.py", line 213, in <listcomp>
item_help = join([func(*args) for func, args in self.items])
File "e:\Program Files\Python\Python36\lib\argparse.py", line 333, in _format_usage
assert ' '.join(opt_parts) == opt_usage
AssertionError
Code: Alles auswählen
def main():
parser = argparse.ArgumentParser(description="Postgres Monitoring Script")
parser.add_argument('-H', '--host', metavar='', required=True,
help='hostname(s) to connect to; defaults to none (Unix socket)')
parser.add_argument('-p', '--port', metavar='', required=False,
help='port(s) to connect to; defaults to $opt{defaultport}.')
parser.add_argument('-db', '--dbname', metavar='', required=False,
help='database name(s) to connect to; defaults to \'postgres\' or \'template1\'')
parser.add_argument('-u', '--dbuser', metavar='', required=True,
help='database user(s) to connect as; defaults to \'$opt{defaultuser}\'')
parser.add_argument('--dbpass', metavar='', required=True,
help='database password(s); use a .pgpass file instead when possible')
parser.add_argument('--dbservice', metavar='', required=False,
help='service name to use inside of pg_service.conf')
parser.add_argument('--action', metavar='', required=True,
help='monitoring action')
args = parser.parse_args()
print("{0} {1} {2} {3} {4} ".format(
args.host, args.dbname, args.dbuser, args.dbpass, args.action))
if __name__ == '__main__':
main()
VG niesel