BackupPC-users

Re: [BackupPC-users] Using perl code within config files

2008-12-04 01:47:06
Subject: Re: [BackupPC-users] Using perl code within config files
From: "Jeffrey J. Kosowsky" <backuppc AT kosowsky DOT org>
To: <backuppc-users AT lists.sourceforge DOT net>
Date: Thu, 04 Dec 2008 01:44:49 -0500
Jeffrey J. Kosowsky wrote at about 12:03:16 -0500 on Wednesday, December 3, 
2008:
 > Craig Barratt wrote at about 15:21:58 -0800 on Tuesday, December 2, 2008:
 >  > Jeffrey writes:
 >  > 
 >  > > Just as an FYI, it is possible to use perl code within config files so
 >  > > that you can use a single config file yet still customize
 >  > > configurations by pc (or groups of pc's) without having to duplicate
 >  > > changes across multiple relatively similar config files each time you
 >  > > change a parameter.
 >  > > 
 >  > > For example, I have a number of windows machines and one linux server.
 >  > > For the windows machines, I use a single config file in
 >  > > /etc/BackupPC/pc and then create links to it for each of my windows
 >  > > machines.
 >  > > 
 >  > > I then use perl conditional statements to make some configurations
 >  > > unique by pc (or group of pc's).
 >  > > 
 >  > > The trick is that $ARGV[0] is the name of the config file (or link)
 >  > > called and thus can be used to determine the machine.
 >  > > Personally, I find this trick very helpful...
 >  > 
 >  > Yes, a nice trick.  But there are two caveats:
 >  > 
 > 
 > OK. I am stumped by something here.
 > The "trick" works fine when running processes such as dump or restore.
 > 
 > But it seems to fail when the pc config file is read when going to the
 > Hosts web page. Specifically when I use the pull-down to go to one of the 
 > hosts
 > on my list, I can confirm that the host-specific config file is being
 > read. However, in that case the value of $ARGV[0] is *undef*.
 > 
 > I am stumped because the code in HostInfo.pm (which I assume is what
 > is called here) calls the same "$bpc->ConfigRead($host)" function
 > which I believe uses 'do' to read in the config file. I don't see how
 > the host-specific config file can be read without setting $ARGV[0]
 > unless it is being done some other way elsewhere.
 > 
 > Any thoughts here?
 > 

I found a solution:
Use $_[1] instead of $ARGV[0] -- it seems to work both from the cgi
call and when a dump/restore is launched.

Also $_[0] is a hashref to a 'BackupPC::Storage::Text' hash.
So in particular you can also get:
$_[0]->{TopDir}
$_[0]->{InstallDir}
$_[0]->{ConfDir}
$_[0]->{LogDir}

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
BackupPC-users mailing list
BackupPC-users AT lists.sourceforge DOT net
List:    https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:    http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/

<Prev in Thread] Current Thread [Next in Thread>