I currently like pdsh (http://code.google.com/p/pdsh/) for doing remote sysadmin: it parallelizes very nicely, and I love being able to issue commands like "pdsh -w compute[000-100] yum update package" to manage hundreds of nodes at a time.
That said, I can see use cases for Fabric where you're implementing some complex logic in Python which you'd like to push out to your servers, rather than just doing simple shell commands or pre-pushing your scripts. But I can't tell how well Fabric parallelizes... being Python I'd expect it to be single-threaded :( , but I might be wrong.
It's also useful once you get out of trivial shell-scripts and need things like sane error handling or data structures, shell chains or escaping, etc. I wrote something like pdsh in the early 2000s in Perl and almost always used it to launch scripts written in a real programming language for any non-trivial task - e.g. even that yum command gets tricky if there's any possible interactive prompting going on or you want to parse output.
bash may not, but pdsh is (I personally used dsh, which also multiplexes ssh connections) and the child processes do not bear the lack of multithreadness of the parents :)
That said, I can see use cases for Fabric where you're implementing some complex logic in Python which you'd like to push out to your servers, rather than just doing simple shell commands or pre-pushing your scripts. But I can't tell how well Fabric parallelizes... being Python I'd expect it to be single-threaded :( , but I might be wrong.
Edit:typo