to use from either B<NOVABOOT_TARGET> environment variable or
B<$default_target> configuration file variable.
+=item --ssh=I<user@hostname>
+
+Configures novaboot to control the target via C<novaboot-shell>
+running remotely via SSH.
+
+Using this option is the same as specifying B<--remote-cmd>,
+B<--remote-expect>, B<--server> B<--rsync-flags>, B<--prefix> and
+B<--reset-cmd> manually in a way compatible with V<novaboot-shell>.
+
+Currently, this in an initial experimental implementation. We plan to
+change/extend this feature soon!
+
=back
=head2 Script preprocessing phase
=item --on, --off
Switch on/off the target machine and exit. The script (if any) is
-completely ignored. Currently, it works only with B<--iprelay> or
-B<--amt>.
+completely ignored. Currently, it works only with the following
+options: B<--iprelay>, B<--amt>, B<--ssh>.
=item -Q, --qemu[=I<qemu-binary>]
my $explicit_target = $ENV{'NOVABOOT_TARGET'};
GetOptions ("target|t=s" => \$explicit_target);
+# Variables for command line options
my ($amt, @append, $bender, @chainloaders, $concat, $config_name_opt, $dhcp_tftp, $dump_opt, $dump_config, @exiton, $exiton_timeout, @expect_raw, $final_eol, $gen_only, $grub_config, $grub_prefix, $grub_preamble, $grub2_prolog, $grub2_config, $help, $ider, $interaction, $iprelay, $iprelay_cmd, $iso_image, $interactive, $kernel_opt, $make, $man, $netif, $no_file_gen, $off_opt, $on_opt, $pulsar, $pulsar_root, $qemu, $qemu_append, $qemu_flags_cmd, $remote_cmd, $remote_expect, $remote_expect_silent, $remote_expect_timeout, $reset, $reset_cmd, $reset_send, $rom_prefix, $rsync_flags, @scriptmod, $scons, $serial, $server, $stty, $tftp, $tftp_port, $uboot, %uboot_addr, $uboot_cmd, @uboot_init);
+my ($target_reset, $target_power_on, $target_power_off);
+
# Default values of certain command line options
%uboot_addr = (
'kernel' => '${kernel_addr_r}',
@expect_seen = ();
}
+sub handle_novaboot_server
+{
+ my ($n, $val) = @_;
+ my $xdg_runtime_dir = $ENV{XDG_RUNTIME_DIR} || '/var/run';
+ my $ssh_ctl_path = "${xdg_runtime_dir}/novaboot-%r@%h%p";
+
+ $remote_cmd = "ssh -tt -M -S '${ssh_ctl_path}' '${val}' console";
+ $remote_expect = "novaboot-shell: Connected";
+ $server = "$val:";
+ $rsync_flags = "--rsh='ssh -S \'${ssh_ctl_path}\''";
+ ($grub_prefix = $val) =~ s/@.*// if index($val, '@') != -1;
+ $reset_cmd = "ssh -tt -S '${ssh_ctl_path}' '${val}' reset";
+
+ $target_power_off = sub { system_verbose("ssh -tt -S '${ssh_ctl_path}' '${val}' off"); };
+ $target_power_on = sub { system_verbose("ssh -tt -S '${ssh_ctl_path}' '${val}' on"); };
+}
+
my %opt_spec;
%opt_spec = (
"amt=s" => \$amt,
"sendcont=s" => \&handle_send,
"serial|s:s" => \$serial,
"server:s" => \$server,
+ "ssh:s" => \&handle_novaboot_server,
"strip-rom" => sub { $rom_prefix = ''; },
"stty=s" => \$stty,
"tftp" => \$tftp,
my $exp; # Expect object to communicate with the target over serial line
-my ($target_reset, $target_power_on, $target_power_off);
my ($amt_user, $amt_password, $amt_host, $amt_port);
if (defined $iprelay || defined $iprelay_cmd) {
to use from either B<NOVABOOT_TARGET> environment variable or
B<$default_target> configuration file variable.
+=item --ssh=I<user@hostname>
+
+Configures novaboot to control the target via C<novaboot-shell>
+running remotely via SSH.
+
+Using this option is the same as specifying B<--remote-cmd>,
+B<--remote-expect>, B<--server> B<--rsync-flags>, B<--prefix> and
+B<--reset-cmd> manually in a way compatible with V<novaboot-shell>.
+
+Currently, this in an initial experimental implementation. We plan to
+change/extend this feature soon!
+
=back
=head2 Script preprocessing phase
=item --on, --off
Switch on/off the target machine and exit. The script (if any) is
-completely ignored. Currently, it works only with B<--iprelay> or
-B<--amt>.
+completely ignored. Currently, it works only with the following
+options: B<--iprelay>, B<--amt>, B<--ssh>.
=item -Q, --qemu[=I<qemu-binary>]