You might consider doing a little Perl script rather than shell for the 
formatting script.  At least that way, you can launch the format command 
as a pipe, read its output (the 11/25000 followed by a bunch of ^H 
characters to back up over itself), parse it, then output something more 
meaningful for a web page, like a bar of stars or somesuch.  I'm not 
certain what buffering mechanisms exist when outputting a page from a 
long-running CGI program, so you might need to flush the stdout stream 
as well so the user sees the bar of stars growing.

Adding new functions to the BackupPC interface isn't very hard.  I added 
one that allows you to get the output of 'ps' on the server, so you can 
see what's running and if it's gone zombie or not.  It only took an hour 
or so to do.  Unfortunately, the way the HTML has been treated for 
translation is quite painful--it's replicated in each language file and 
translated in place, so you have to make and maintain multiple copies of 
each page.  But it's straightforward, at least.

As for the advisability of formatting from a web page... Let's just say 
you have a lot of trust in your users.  :-)

JH

Timothy J. Massey wrote:
> Hello!
>
> I've written a CGI script to allow the user to change the media in a 
> BackupPC using the web GUI.  There's really just two parts:  shut down 
> the server, and initialize the media.  I have a shell script that works, 
> but I would like to improve it.  I have put zero effort into the HTML: I 
> will eventually wrap the standard BackupPC look and feel around it.  My 
> biggest problem is the terrible delay while the format is taking place.
>
> #!/bin/sh
> echo "Content-type: text/html"
> echo ""
> echo "<HTML><HEAD><TITLE>Resetting drive</TITLE></HEAD><BODY>"
> echo "<P><H1>Erasing and configuring drive</H1></P><P>"
> echo "Unmounting drive...<BR>"
> sudo /bin/umount /mnt/removable
> echo "<BR>Formatting drive (this may take up to 10 minutes)...<BR>"
> sudo /sbin/mke2fs -j -LDataDrive /dev/hdc1 > /dev/null
> echo "<BR>Mounting drive...<BR>"
> sudo /bin/mount /mnt/removable
> echo "<P>Drive change complete!<P>"
> echo "<H1><A HREF='/backuppc'>Return to Backup 
> System</A>.</H1></P></BODY></HTML>"
> echo ""
> exit
>
> I am *very* open to suggestions on how I might implement this more 
> cleanly.  The script works, but there is a very long pause while the 
> script does the format.  If I take the "> /dev/null" out, I get lots of 
> lines like this:
>
> 2/1222 3/1222 4/1222 5/1222 
> 6/1222 
> 7/1222 8/1222 9/1222 10/1222 
> 11/1222 
> 12/1222 13/1222 14/1222 15/1222 
> 16/1222 
> 17/1222 18/1222 19/1222 20/1222 
> 21/1222 
> 22/1222 23/1222 24/1222 25/1222 
> 26/1222 
> 27/1222 28/1222 29/1222 30/1222 
> 31/1222 
> 32/1222 33/1222 34/1222 35/1222 
> 36/1222 
> 37/1222 38/1222 39/1222 40/1222 
> 41/1222 
> 42/1222 43/1222 44/1222 45/1222 
> 46/1222 
> 47/1222 48/1222 49/1222 50/1222 
> 51/1222 
> 52/1222 53/1222 54/1222 55/1222 
> 56/1222 
> 57/1222 58/1222 59/1222 60/1222 
> 61/1222 
> 62/1222 63/1222 64/1222 65/1222 
> 66/1222 
> 67/1222 68/1222 69/1222 70/1222 
> 71/1222 
> 72/1222 73/1222 74/1222 75/1222 
> 76/1222 
> 77/1222 78/1222 79/1222 80/1222 
> 81/1222 
> 82/1222 83/1222 84/1222 85/1222 
> 86/1222 
> 87/1222 88/1222 89/1222 90/1222 
> 91/1222 
> 92/1222
>
> Those lines repeat for hundreds of lines.
>
> What I would really like would be some way of letting the user know that 
> progress is being made, but obviously in a slightly more attractive way!  :)
>
> Does anyone have any experience on how you might be able to format a 
> drive via a CGI script that is more attractive?  Google has been no 
> help.  I have a feeling that formatting drives remotely is not exactly a 
> common goal... :)
>
> Thank you very much for any help you might be able to provide.  For 
> completeness, I've added my script for shutting the server down below as 
> well.  "shutdown.html" is merely a BackupPC page saved as HTML and 
> modified for my purposes.
>
> Tim Massey
>
>
> CGI Script:
> #!/bin/sh
> echo "Content-type: text/html"
> echo ""
> cat shutdown.html
> echo ""
> echo ""
> sudo /sbin/shutdown -h now
> exit
>
> shutdown.html:
> <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
> <html><head>
> <title>BackupPC: Shut Down Server</title>
> <link rel=stylesheet type="text/css" 
> href="/backuppc/image/BackupPC_stnd.css" title="CSSFile">
> <meta http-equiv="pragma" content="no-cache">
> </head><body 
> onLoad="document.getElementById('NavMenu').style.height=document.body.scrollHeight">
> <a href="http://backuppc.sourceforge.net";><img 
> src="/backuppc/image/logo.gif" hspace="5" vspace="7" border="0"></a><br>
> <div id="Content">
> <div class="h1">Shut Down Server</div>
> <p><h2>The system is being shut down!</h2></p>
> <p>This will take approximately 2 minutes. Do not remove the drive before
> the system has powered itself off.</p>
> </div>
> <div class="NavMenu" id="NavMenu" style="height:100%">
> <div class="NavTitle">Server</div>
> <a href="/backuppc/index.cgi">Status</a>
> <a href="/backuppc/index.cgi?action=summary">Host Summary</a>
> <a href="/backuppc/index.cgi?action=editConfig">Edit Config</a>
>
> <a href="/backuppc/index.cgi?action=editConfig&newMenu=hosts">Edit Hosts</a>
> <a href="/backuppc/index.cgi?action=adminOpts">Admin Options</a>
> <a href="/backuppc/index.cgi?action=view&type=LOG">LOG file</a>
> <a href="/backuppc/index.cgi?action=LOGlist">Old LOGs</a>
> <a href="/backuppc/index.cgi?action=emailSummary">Email summary</a>
> <a href="/backuppc/index.cgi?action=queue">Current queues</a>
> <a href="/backuppc/index.cgi?action=view&type=docs">Documentation</a>
> <a href="http://backuppc.sourceforge.net/faq";>FAQ</a>
> <a href="http://www.obscorp.com";>OBSCorp</a>
>
> <a href="/backuppc/shutdown.cgi">Shut Down</a>
> <a href="/backuppc/initmedia.cgi">Init Media</a>
> <br><br><br>
> </div>
> </body></html>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> BackupPC-users mailing list
> BackupPC-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/backuppc-users
> http://backuppc.sourceforge.net/
>
>   

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/backuppc-users
http://backuppc.sourceforge.net/

Reply via email to