Esempio n. 1
0
        public void copyRemoteDirectoryLocal()
        {
            var info = util.GetUsernameAndPassword();
            using (var s = new SSHConnection(info.Item1, info.Item2))
            {
                // Create a "complex" directory structure on the remote machine
                s
                    .ExecuteCommand("mkdir -p /tmp/usergwatts/data")
                    .ExecuteCommand("mkdir -p /tmp/usergwatts/data/d1")
                    .ExecuteCommand("mkdir -p /tmp/usergwatts/data/d2")
                    .ExecuteCommand("echo hi1 > /tmp/usergwatts/data/f1")
                    .ExecuteCommand("echo hi2 > /tmp/usergwatts/data/d1/f2")
                    .ExecuteCommand("echo hi3 > /tmp/usergwatts/data/d2/f3")
                    .ExecuteCommand("echo hi4 > /tmp/usergwatts/data/d2/f4");

                // Remove everything local
                var d = new DirectoryInfo("./data");
                if (d.Exists)
                {
                    d.Delete(true);
                    d.Refresh();
                }
                d.Create();

                // Do the copy
                s.CopyRemoteDirectoryLocally("/tmp/usergwatts/data", d);

                Assert.IsTrue(File.Exists(Path.Combine(d.FullName, "f1")));
                Assert.IsTrue(File.Exists(Path.Combine(d.FullName, "d1", "f2")));
                Assert.IsTrue(File.Exists(Path.Combine(d.FullName, "d2", "f3")));
                Assert.IsTrue(File.Exists(Path.Combine(d.FullName, "d2", "f4")));
            }
        }
Esempio n. 2
0
        public void FetchOneFileWithNoBackupOverNetwork()
        {
            // This is a real run (so it is slow), and it will fetch data over the network.
            var d = new DirectoryInfo("FetchOneFileWithNoBackupOverNetwork");
            if (d.Exists)
            {
                d.Delete(true);
            }
            d.Create();

            var c = GenerateLocalConfigWithWorkingRemote(d);
            Locator.DisableAllLocators(true);

            var l = LocalMachine.GetLocation(c);
            var r = l.GetDSInfo("user.gwatts:user.gwatts.301295.EVNT.1");
            Assert.AreEqual(1, l.GetDS(r, rep => Console.WriteLine(rep), fslist => fslist.Take(1).ToArray(), null, 0).Length);

            var dsdir = d.SubDir("user.gwatts.301295.EVNT.1");
            Assert.IsTrue(dsdir.Exists);
            Assert.AreEqual(1, dsdir.EnumerateFiles("*.root.*", SearchOption.AllDirectories).Count());

            // Next, make sure that there are no files left over up on the remote machine.
            var username = c["LinuxUserName"];
            var machine = c["LinuxHost"];

            using (var s = new SSHConnection(machine, username))
            {
                bool stillThere = false;
                s.ExecuteCommand(string.Format("ls {0}", c["LinuxTempLocation"]),
                    outLine =>
                    {
                        Console.WriteLine("output of ls: " + outLine);
                        stillThere |= !outLine.Contains("cannot access");
                    }
                    );
                Assert.IsFalse(stillThere);
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Execute the command
 /// </summary>
 /// <param name="command"></param>
 /// <param name="output"></param>
 /// <param name="secondsTimeout"></param>
 /// <param name="refreshTimeout"></param>
 /// <param name="failNow"></param>
 /// <param name="dumpOnly"></param>
 /// <param name="seeAndRespond"></param>
 /// <param name="waitForCommandReponse"></param>
 /// <returns></returns>
 public ISSHConnection ExecuteCommand(string command, Action <string> output = null, int secondsTimeout = 3600, bool refreshTimeout = false, Func <bool> failNow = null, bool dumpOnly = false, Dictionary <string, string> seeAndRespond = null, bool waitForCommandReponse = true)
 {
     MakeConnections().Wait();
     return(_deepestConnection.ExecuteCommand(command, output, secondsTimeout, refreshTimeout, failNow, dumpOnly, seeAndRespond, waitForCommandReponse));
 }
Esempio n. 4
0
 /// <summary>
 /// Restore everything
 /// </summary>
 public void Dispose()
 {
     // Put the prompt back first, so that we come back properly.
     _connection._prompt = _oldPrompt;
     _connection.ExecuteCommand("exit");
 }
Esempio n. 5
0
        public void ReadBackWithPrompt()
        {
            var info = util.GetUsernameAndPassword();

            using (var s = new SSHConnection(info.Item1, info.Item2))
            {
                Console.WriteLine("Before we do anything here is the environment:");
                s.ExecuteCommand("set", l => Console.WriteLine(" set: " + l));
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();

                bool valueSet = false;
                bool sawPrompt = false;
                s.ExecuteCommand("prompt=\"what is up: \"");
                s.ExecuteCommandWithInput("read -p \"$prompt\" bogusvalue", new Dictionary<string, string>() { { "up:", "\nthis freak me out is a test" } }, l =>
                    {
                        sawPrompt = sawPrompt || l.Contains("what is up");
                        Console.WriteLine("==> " + l);
                    })
                    .ExecuteCommand("set", l => Console.WriteLine(" set: " + l))
                    .ExecuteCommand("echo bogusvalue $bogusvalue", l =>
                    {
                        valueSet = valueSet || l.Contains("this");
                        Console.WriteLine("--> " + l);
                    });

                // THis guy isn't working yet because we don't seem to read in any input.
                Assert.Inconclusive();
                Assert.IsTrue(sawPrompt);
                Assert.IsTrue(valueSet);
            }
        }
Esempio n. 6
0
 public void PWDOutputAsExpected()
 {
     var info = util.GetUsernameAndPassword();
     using (var s = new SSHConnection(info.Item1, info.Item2))
     {
         int count = 0;
         s.ExecuteCommand("pwd", l =>
         {
             Assert.IsFalse(l.Contains("\r"));
             Assert.IsFalse(l.Contains("\n"));
             Console.WriteLine("--> " + l);
             count++;
         });
         Assert.AreEqual(1, count);
     }
 }
Esempio n. 7
0
 public void ListDirectoryWithNoOutput()
 {
     var info = util.GetUsernameAndPassword();
     using (var s = new SSHConnection(info.Item1, info.Item2))
     {
         s.ExecuteCommand("ls -a | cat");
     }
 }
Esempio n. 8
0
 public void ListDirectory()
 {
     var info = util.GetUsernameAndPassword();
     using (var s = new SSHConnection(info.Item1, info.Item2))
     {
         bool foundFile = false;
         s.ExecuteCommand("ls -a | cat", l => { if (l.Contains(".bash_profile")) { foundFile = true; } Console.WriteLine(l); });
         Assert.IsTrue(foundFile);
     }
 }