Password management - the script
Nick Demou (enLogic)
ndemou at enlogic.gr
Wed Dec 21 18:42:01 EET 2005
Giorgos Keramidas wrote:
> On 2005-12-21 14:33, Pavlos Parissis <p_pavlos at freemail.gr> wrote:
>
>>...
>>
>>Αν και δεν έχω ιδέα απο python είπα να κάνω ένα απλό τέστ απο
>>περιέργεια , δίνοντας echo "dddd" |python show-pass.py
>>
>>Password DB
>>Don't use this programm if you are not authorized to do so (hit ctrl-C to exit)
>>
>>?word, number, +, * >******Bad Command******
>>?word, number, +, * >Traceback (most recent call last):
>> File "show-pass.py", line 126, in ?
>> cmd=left(raw_input(colst+'?word, number, +, * '+colend+'>').strip(),255)
>>EOFError: EOF when reading a line
>
>
> Γι αυτό εγώ αν έγραφα κάτι σαν 'shell' σε Python, θα ξεκινούσα κάπως έτσι:
>
> 1 #!/usr/bin/env python
> 2
> 3 import sys
> 4
> 5 def shellcmd(s):
> 6 print "## shellcmd \"" + s + "\""
> 7 return s
> 8
> 9 def main():
> 10 while True:
> 11 s = sys.stdin.readline()
> 12 # When we reach EOF, just quit
> 13 if not s:
> 14 return
> 15 try:
> 16 s = s.strip().rstrip()
> 17 shellcmd(s)
> 18 except ShellCommandError, msg:
> 19 print "command error: " + msg.strip().rstrip()
> 20
> 21 # Start at the main loop of the program.
> 22 main()
>
σίγουρα πιο καθαρό από τον δικό μου κώδικα
μικρή λεπτομέρια: το rstrip δεν έχει νόημα μετά από strip ( που είναι
ισοδύναμη με .lstrip().rstrip() )
> Η main() δεν χρειάζεται να είναι πιο περίπλοκη από ένα απλό:
>
> - read command
> - run command
> - catch errors
> - repeat
>
> Η shellcmd() μπορεί να αρχίσει να μεγαλώνει εύκολα, αν της προσθέσεις
> ένα dictionary με keys τα 'commands' και value για κάθε command ένα
> implementation function (ή ακόμα καλύτερα ένα stack από implementation
> functions, ώστε να μπορείς να κάνεις 'nest'/'overload' την υλοποίηση
> κάθε shellcmd απλά κάνοντας append() και pop() τις overloaded
> υλοποιήσεις:
>
> Ετσι μπορείς να κάνεις ένα 'shell', του οποίου οι υποστηριζόμενες
> εντολές και το τι κάνει η κάθε εντολή μπορεί να είναι εντελώς
> επεκτάσιμα.
>
> Κάτι άλλο που μπορεί να βολέψει αν φτιάξεις το shell σου με πιο object
> oriented τρόπο ...
More information about the Linux-greek-users
mailing list