I use expect scripts to automate the logins (especially because I have to pass through a jumb box and enter in a chroot and lots of passwords must be entered) and did some "tweaks" to the config of cssh.
So, I have this "main script" in my bin folder that given a "server name/alias" it takes me into the server that I want and where I want.
In the ~/.clusterssh/config I've set the "ssh" parameter to point to my script, also "ssh_args" must be set to some innocuous/fake arg, that's because cssh has it's default args list, if left empty actually the default list will end up being to the script.
So the script (in each window/terminal) will receive this args and 1 of the args given to the cssh, the script it recuperates from a file for the given server the credentials set and the steps that it must do in order to arrive where I want, then it calls the "expect code" with all that data.
~/.clusterssh/config
ssh=/home/user/bin/qs.sh
ssh_args=-a
qs.sh
#!/bin/bash
export PATH=~/bin:$PATH
shift
case $1 in
q4|q5|q6|q7|q8|q9)
essh user1@axt$1
### essh it's some little bash script that does the things I said before and in the end it launches the expect
;;
q1|q2|q3)
essh axtr@axt$1
;;
*)
echo "GOOH"
esac
so I usually call it with something like this
# cssh q4 q5 q6 q7
it's working also with "cluster aliases"
having the cluster
"qAll q4 q5 q6 q7"
I can call with cssh qAll
Hopes it helps anyone else.