Index: /trunk/tools/neb-reverse
===================================================================
--- /trunk/tools/neb-reverse	(revision 28117)
+++ /trunk/tools/neb-reverse	(revision 28117)
@@ -0,0 +1,40 @@
+#!/usr/bin/env perl
+
+use warnings;
+use strict;
+
+use DBI;
+use constant DB_SOCKET => '/var/run/mysqld/mysqld.sock'; # Socket for mysql
+use Getopt::Long qw( GetOptions :config auto_help auto_version gnu_getopt );
+
+my ($db_host, $db_name, $db_user, $db_pw); # Database details
+my @files;                                 # Files of interest
+
+GetOptions(
+    'dbhost=s' => \$db_host, # Database host name
+    'dbname=s' => \$db_name, # Database name
+    'dbuser=s' => \$db_user, # Database user
+    'dbpass=s' => \$db_pw, # Database p/w
+    'file=@s' => \@files,  # Files of interest
+    ) or die "Unable to parse arguments.\n";
+die "Unknown option: @ARGV\n" if @ARGV;
+die "Required options: --dbhost --dbname --dbuser --dbpass --file\n"
+    unless defined $db_host
+    and defined $db_name
+    and defined $db_user
+    and defined $db_pw
+    and scalar @files > 0;
+
+
+# Database connection
+my $db = DBI->connect( "DBI:mysql:database=$db_name;host=$db_host;mysql_socket=" . DB_SOCKET(),
+                       $db_user,
+                       $db_pw,
+                       { RaiseError => 1, AutoCommit => 1 }
+                       ) or die "Unable to connect to database: $DBI::errstr";
+
+foreach my $file (@files) {
+    my $sql = "SELECT CONCAT('neb://any/', ext_id) FROM storage_object JOIN instance USING(so_id) WHERE uri = 'file://$file'";
+    my $results = $db->selectcol_arrayref( $sql ) or die "Unable to execute SQL: $DBI::errstr";
+    print "$$results[0]\n";
+}
