Gli script, in generale, eseguiranno un comando e attenderanno l'esecuzione. Solo una volta terminato il processo avviato dal comando, lo script passerà al comando successivo.
metasploit può essere utilizzato in modalità interattiva e sembra essere quello che stai cercando di fare. Ciò significa che msfconsole è il processo che è stato creato e quindi lo script non continuerà fino alla conclusione del processo.
Potresti considerare l'utilizzo di qualcosa di simile aspettandoti di interagire con un programma che si aspetta input mentre è in esecuzione. In alternativa, molte cose che vuoi fare in metasploit possono essere fatte senza una sessione interattiva, così puoi provare a trovare quei set di comandi e usarli invece.
o potresti farlo usando un linguaggio come ruby o python, qui è un esempio di script rubino creato da rapid7 gli sviluppatori del framework metasploit.
Spero che ti aiuti.