netrc_password.py (948B)
1 #!/usr/bin/env python3 2 """ 3 Lê a palavra-passe SMTP de /root/.netrc para a máquina indicada (argv[1]). 4 5 Usado por msmtp passwordeval. Executar apenas como root; saída só na stdout. 6 Código de saída != 0 se não encontrar entrada. 7 """ 8 from __future__ import annotations 9 10 import netrc 11 import sys 12 from pathlib import Path 13 14 NETRC_PATH = Path("/root/.netrc") 15 16 17 def main() -> int: 18 if len(sys.argv) != 2: 19 return 2 20 host = sys.argv[1].strip() 21 if not host: 22 return 2 23 if not NETRC_PATH.is_file(): 24 return 1 25 try: 26 n = netrc.netrc(str(NETRC_PATH)) 27 tup = n.authenticators(host) 28 if not tup: 29 return 1 30 _login, _account, password = tup 31 if not password: 32 return 1 33 sys.stdout.write(password) 34 sys.stdout.flush() 35 except (netrc.NetrcParseError, OSError): 36 return 1 37 return 0 38 39 40 if __name__ == "__main__": 41 raise SystemExit(main())