NEW --- - Added the following builtins: __DATE__ # Date in YYYYMMDD format __DATETIME__ # Date and time in YYYYMMDDHHMMSS format __HOSTNAME__ # Full name of current host as passed to program __HOSTNUM__ # Count of host being processed, starting at 1 __HOSTSHORT__ # Leftmost component of hostname as passed to program __TIME__ # Time in HHMMSS format - Added -E to redirect all stderr output to stdout instead, - Added -T timeout option (default is 15 sec). - Added -a to allow program to continue after file transfer error. - Added -l logging option. Defaults to /dev/null. This fixes the error that was previously being reported: "No handlers could be found for logger "paramiko.transport" CHANGES ------- - Changed hostname separator from ':' to '-' when using the -G command. - The <HOSTNAME> and <HOSTSHORT> builtins have been replaced with the new builtins described above. - Error messages now more consistent and clear. BUG FIXES --------- - Fixed bug that prevented the proper dereferencing of HOSTNAME in file transfer specifications. - Fixed bug that prevented '.define' variables from being substituted in file transfer specifications. - Fixed bug that only recognized sudo invocations if they were the first statement on a command line. All instances of the string "sudo " will now force sudo password prompting and processing. That string is ignored if it appears inside single- or double quotes. - Fixed bug that intermittently occurred during password-based auth sessions because ssh-agent and key searching were still being used. - Fixed error reporting blowout when key-exchange auth fails. TODO ---- - Add: .define foo = ! string - Recursive .define replacements with loop detection and explain how to use to override bultins. - Do testmode substitions. - Make note that all cmdfiles are read in and THEN evaluated at *runtime*: echo __HOSTNUM__ echo __HOSTNAME__ echo __HOSTSHORT__ .define __HOSTSHORT__ = ozzie Runtime __HOSTSHORT__ == ozzie - Write a new section on builtins. Note that they are evaluated *locally* and are reevaluated for each new host being processed. e.g., Timestamp will change with a big list of hosts. - Add note about this being a *NIX, Python 2 only prog. sudoers Mode ------------ - Capture bad password - Capture failed command output - Write the server noise, as it appears to stderr for debug purposes - Note in docs: In this mode it will HANG waiting for interactive input. - Note in docs: There is no separation between stdout and sterr in this mode