Hi all, I need to validate if a certain UNIX account is able to log in to a series of servers of mixed flavors (HP-UX, Solaris, RHEL and AIX) so I'm trying to do it with fabric.
I wanted to apply hide("status") to an entire internal function, but I keep getting the following error: elxin009: ~/fabric # fab main [bsnbk001] out: SunOS [bsnbk001] out: [bsnbk001] OS is SunOS Disconnecting from bsnbk001... done. Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/fabric/main.py", line 743, in main *args, **kwargs File "/usr/local/lib/python2.7/site-packages/fabric/tasks.py", line 424, in execute results['<local-only>'] = task.run(*args, **new_kwargs) File "/usr/local/lib/python2.7/site-packages/fabric/tasks.py", line 174, in run return self.wrapped(*args, **kwargs) File "/home/felix/fabric/fabfile.py", line 24, in main execute(_my_function, hosts=host_list) File "/usr/local/lib/python2.7/site-packages/fabric/tasks.py", line 384, in execute multiprocessing File "/usr/local/lib/python2.7/site-packages/fabric/tasks.py", line 274, in _execute return task.run(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/fabric/tasks.py", line 174, in run return self.wrapped(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/fabric/decorators.py", line 215, in inner with settings(*arg_settings, **kw_settings): File "/usr/local/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/usr/local/lib/python2.7/contextlib.py", line 112, in nested vars.append(enter()) File "/usr/local/lib/python2.7/contextlib.py", line 19, in __enter__ raise RuntimeError("generator didn't yield") RuntimeError: generator didn't yield This is a very simplified version of my original code that I'm using for troubleshooting since it generates the same error: from fabric.api import task, hide, execute, env, puts, run, with_settings env.use_shell = False env.disable_known_hosts = True env.warn_only = True env.abort_on_prompts = True env.skip_bad_hosts = True env.command_timeout = 3 env.eagerly_disconnect = True env.always_use_pty = False @with_settings(hide("status")) def _my_function(): try: out = run("uname") puts("OS is " + out) except SystemExit: puts("can't get the OS") @task def main(): host_list = [line.rstrip("\n") for line in open("hosts.txt")] with hide("running"): execute(_my_function, hosts=host_list) The hosts.txt file is just a text file with one hostname per line. This was the content of the file when I captured the output above (just two servers): bsnbk001 slxap003 In fact, none of the env settings makes any difference, but if I comment out the @with_settings line it works as expected. If the hosts.txt file contains only one hostname then it also works without any errors. Please, any ideas of what I am doing wrong? I'm still learning Python so forgive me if I'm doing something silly. Thank you, Felix PS: I'm running Fabric 1.10.1 and Paramiko 1.15.2 on RHEL. ________________________________ This communication is confidential. We only send and receive email on the basis of the terms set out at www.rogers.com/web/content/emailnotice<http://www.rogers.com/web/content/emailnotice> Ce message est confidentiel. Notre transmission et r?ception de courriels se fait strictement suivant les modalit?s ?nonc?es dans l'avis publi? ? www.rogers.com/aviscourriel <http://www.rogers.com/aviscourriel> ________________________________
_______________________________________________ Fab-user mailing list Fab-user@nongnu.org https://lists.nongnu.org/mailman/listinfo/fab-user