[ale] Question about scripting...
Ed Cashin
ecashin at noserose.net
Mon Aug 10 09:51:55 EDT 2009
The question isn't silly, but as others pointed out, there are better
strategies for using multiple technologies. You could, e.g., call
the shell from perl (since perl was designed with that in mind) or
you could put the perl stuff in its own script and then call that from
the shell script.
Folks have said you can't do what you were asking about, though,
which probably goes to far. By adding two lines and fixing the missing
single quote (and commenting out "*nohup*"), your script could be
runnable. The way to do that is to use a here document, as shown
below. I think the example below has low clarity and maintainability,
but it does show one way of doing exactly what you asked about.
Some unsolicited advice I'd offer: It helps to put quotes around
shell variables and to use the "-e" flag so that the shell exits on
encountering an error. Unexpected (and sometimes bad) things
can happen when you let the program get away from you.
#!/bin/bash
set -e
workdir=/tmp
file="`hostname`.`date +%m%d%Y`.tgz"
# Functions
scpjvm () {
/usr/bin/perl -w /dev/stdin <<'EOF'
#!/usr/bin/perl -w
use Net::SFTP;
use strict;
print "hi mom\n";
exit;
my $host = "mars.myhost.com";
my %args = (
user => 'toor',
password => '1234567',
debug => 'true'
);
my $sftp = Net::SFTP->new($host, %args);
$sftp->get("/tmp/'jvm.`hostname`.`date +%m%d%Y`.tgz'",
"/home/ia/'jvm.`hostname`.`date +%m%d%Y`.tgz'");
EOF
}
# The work
echo cd $workdir
echo tar czvfpP $file /etc/httpd /opt/jboss/jboss/bin/
echo /opt/jboss/jboss/server /usr/local/bin --exclude *log* --exclude
#*nohup*
scpjvm
rm $file
--
Ed Cashin <ecashin at noserose.net>
More information about the Ale
mailing list