logo_kerberos.gif

Difference between revisions of "User talk:Haoqili"

From K5Wiki
Jump to: navigation, search
(Bugs I've encountered and fixed (started loggin since Jun 24th).)
(Bugs I've encountered and fixed (started loggin since Jun 24th).)
Line 1: Line 1:
==Bugs I've encountered and fixed (started loggin since Jun 24th).==
+
==Kerberos Bugs I've encountered and fixed (started loggin since Jun 24th).==
   
 
* When trying to ''kinit username''
 
* When trying to ''kinit username''
Line 9: Line 9:
 
: ERROR: ''Address already in use - Cannot bind server socket to port [#] address [IP address]''
 
: ERROR: ''Address already in use - Cannot bind server socket to port [#] address [IP address]''
 
: SOLUTION: 1. see if it is true that port [#] is in use by ''netstat -nap | grep [#]'' (I also did ''pgrep -x krb5kdc''). 2. kill the process: ''pkill -x krb5kdc''. note the "-x" is for matching exactly the process "krb5kdc".
 
: SOLUTION: 1. see if it is true that port [#] is in use by ''netstat -nap | grep [#]'' (I also did ''pgrep -x krb5kdc''). 2. kill the process: ''pkill -x krb5kdc''. note the "-x" is for matching exactly the process "krb5kdc".
  +
  +
  +
==Python Bugs I've encountered and fixed==
  +
  +
* When talking to the terminal shell, a command (in my case, ''kdbt_util add_mkey'') asks for password twice (second time is confirmation). I first tried:
  +
::<pre>
  +
::p = Popen(command.split(), stdin=PIPE, stdout=PIPE, stderr=PIPE)
  +
::(out, err) = p.communicate('password')
  +
::(out2, err2) = p.communicate('password')
  +
::</pre>
  +
:When I ran it, I got a chunk of error that ends with: ''ValueError: I/O operation on closed file''. So what happens is that communicate closes the pipe, so it can only be used as the last line. <br>
  +
:Solution code:
  +
::<pre>
  +
::p = Popen(command.split(), stdin=PIPE, stdout=PIPE, stderr=PIPE)
  +
::p.stdin.write('password'+'\n')
  +
::p.stdin.write('password'+'\n')
  +
::</pre>
  +
:Note don't forget the new line at the end.
   
 
==Tips. Useful little things to know==
 
==Tips. Useful little things to know==

Revision as of 11:25, 30 June 2009

Kerberos Bugs I've encountered and fixed (started loggin since Jun 24th).

  • When trying to kinit username
ERROR: kinit: Cannot contact any KDC for realm [your realm fqdn] while getting initial credentials
SOLUTION: make sure KDC is running. /usr/local/sbin/krb5kdc
SOLUTION: 1. check log file. I looked in /var/log/auth.log. The bottom of it says: Cannot create reply cache file /var/tmp/krb5kdc_rcache: File exits. 2. sudo rm /var/tmp/krb5kdc_rcache.
  • Can't start krb5kdc and in auth.log it says:
ERROR: Address already in use - Cannot bind server socket to port [#] address [IP address]
SOLUTION: 1. see if it is true that port [#] is in use by netstat -nap | grep [#] (I also did pgrep -x krb5kdc). 2. kill the process: pkill -x krb5kdc. note the "-x" is for matching exactly the process "krb5kdc".


Python Bugs I've encountered and fixed

  • When talking to the terminal shell, a command (in my case, kdbt_util add_mkey) asks for password twice (second time is confirmation). I first tried:
p = Popen(command.split(), stdin=PIPE, stdout=PIPE, stderr=PIPE)
(out, err) = p.communicate('password')
(out2, err2) = p.communicate('password')
When I ran it, I got a chunk of error that ends with: ValueError: I/O operation on closed file. So what happens is that communicate closes the pipe, so it can only be used as the last line.
Solution code:
p = Popen(command.split(), stdin=PIPE, stdout=PIPE, stderr=PIPE)
p.stdin.write('password'+'\n')
p.stdin.write('password'+'\n')
Note don't forget the new line at the end.

Tips. Useful little things to know

Python

  • p = Popen('blah', stdin=PIPE, stdout=PIPE, stderr=PIPE)
(out, err) = p.communicate('inputThing\n') <-- don't forget the return "\n" at the end!
  • When you're doing a bunch of p=Popen('shell command') be careful because Popen starts a new branch so the next Popen might start without the previous one having completed. To fix this problem, put in:
if int(p.wait()) != 0: #meaning that it's not executed
print "error message"
exit
  • Two ways to display outputs after Popen( a command that has to get into something, in my case, getting into kadmin.local) 06262009

Way 1:

p = Popen(['commannd', 'all', 'in', 'one', 'line'], stdin=PIPE, stdout=PIPE, stderr=PIPE) #e.g. ['kadmin.local', '-q', 'listprincs']
if int(p.wait()) != 0:
print p.stdout.readlines()

Way 2:

p = Popen(['command', 'front', 'chunk'], stdin=PIPE, stdout=PIPE, stderr=PIPE) #e.g. ['kadmin.local']
(out, err) = p.communicate('rest of command') #e.g. 'listprincs'
print out