Hoi,
Ik wil graag in een script de mogelijkheid geven om een wachtwoord in te voeren in de commandline. Dit script kan op verschillende manieren worden gestart:
1. door de gebruiker
2. door een extern programma
3. door gebruiker, maar zonder wachtwoord.
Dit betekent dat het dus op 3 manieren kan worden aangevraagd:
Bij 1, wachtwoord wordt niet op de cmdline direct ingegeven, maar alleen -p en het script vraagt om het wachtwoord met getpass zodat het niet zichtbaar wordt:
mke@mke-linux:/home/mke$ script.py -p
password:
Bij 2, wachtwoord wordt direkt bij aanroep meergegeven:
script.py -p wachtwoord
Bij 3, script wordt gestart zonder -p.
Ik weet dat ik met optionparser dit soort dingen zou moeten kunnen, alleen snap ik niet hoe ik ervoor zorg dat een optie alle drie gedragingen kan vertonen. Ik kan optie 1 heel gemakkelijk schrijven:
import getpass
from optparse import OptionParser
parser = OptionParser('Mijn opties')
parser.add_option('-p', '--pass', dest='passw', default=False,
help='password', action='store_true',
)
(options, args) = parser.parse_args()
if options.passw==True:
p = getpass.getpass()
else: p=''
Maar dit accepteerd geen argumenten, dus ik kan geen password op de commandline invoeren zoals in optie 2.
Optie 2 is nog gemakkelijker:
from optparse import OptionParser
parser = OptionParser('Mijn opties')
parser.add_option('-p', '--pass', dest='passw', default='',
help='password',
)
(options, args) = parser.parse_args()
p = options.passw
Maar dan werkt optie 1 weer niet (onzichtbaar password invoeren) omdat het niet accepteerd dat er geen argument wordt ingevoerd.
Weet iemand hoe dit te doen is?