예제 #1
0
        /// <summary>
        /// Get input from the user
        /// </summary>
        public static SshConnectionInfo GetInput()
        {
            SshConnectionInfo info = new SshConnectionInfo();

            Console.Write("Enter Remote Host: ");
            info.Host = Console.ReadLine();
            Console.Write("Enter Username: "******"Use publickey authentication? [Yes|No] :");
            string resp = Console.ReadLine();

            if (resp.ToLower().StartsWith("y"))
            {
                Console.Write("Enter identity key filename: ");
                info.IdentityFile = Console.ReadLine();
            }
            else
            {
                Console.Write("Enter Password: ");
                info.Pass = Console.ReadLine();
            }
            Console.WriteLine();
            return(info);
        }
예제 #2
0
        public static void RunExample()
        {
            try
            {
                SshConnectionInfo       input = Util.GetInput();
                string                  proto = GetProtocol();
                SshTransferProtocolBase sshCp;

                if (proto.Equals("scp"))
                {
                    sshCp = new Scp(input.Host, input.User);
                }
                else
                {
                    sshCp = new Sftp(input.Host, input.User);
                }

                if (input.Pass != null)
                {
                    sshCp.Password = input.Pass;
                }
                if (input.IdentityFile != null)
                {
                    sshCp.AddIdentityFile(input.IdentityFile);
                }
                sshCp.OnTransferStart    += new FileTransferEvent(sshCp_OnTransferStart);
                sshCp.OnTransferProgress += new FileTransferEvent(sshCp_OnTransferProgress);
                sshCp.OnTransferEnd      += new FileTransferEvent(sshCp_OnTransferEnd);

                Console.Write("Connecting...");
                sshCp.Connect();
                Console.WriteLine("OK");

                while (true)
                {
                    string direction = GetTransferDirection();
                    if (direction.Equals("to"))
                    {
                        string lfile = GetArg("Enter local file ['Enter to cancel']");
                        if (lfile == "")
                        {
                            break;
                        }
                        string rfile = GetArg("Enter remote file ['Enter to cancel']");
                        if (rfile == "")
                        {
                            break;
                        }
                        sshCp.Put(lfile, rfile);
                    }
                    else
                    {
                        string rfile = GetArg("Enter remote file ['Enter to cancel']");
                        if (rfile == "")
                        {
                            break;
                        }
                        string lpath = GetArg("Enter local path ['Enter to cancel']");
                        if (lpath == "")
                        {
                            break;
                        }
                        sshCp.Get(rfile, lpath);
                    }
                }

                Console.Write("Disconnecting...");
                sshCp.Close();
                Console.WriteLine("OK");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }