Para coisas simples, você pode usar o curl. Existe uma maneira de encher um formulário com a opção -F, mas muitas coisas são mais complexas do que apenas enviar um único formulário. Para isso, você precisa passar por várias etapas para chegar onde deseja estar.
Eu escreveria um script perl e usaria o módulo WWW :: Mechanize.
Aqui está um exemplo da página:
#!/usr/bin/perl
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
$mech->get( $url );
$mech->follow_link( n => 3 );
$mech->follow_link( text_regex => qr/download this/i );
$mech->follow_link( url => 'http://host.com/index.html' );
$mech->submit_form(
form_number => 3,
fields => {
username => 'mungo',
password => 'lost-and-alone',
}
);
$mech->submit_form(
form_name => 'search',
fields => { query => 'pot of gold', },
button => 'Search Now'
);