当我使用SSH.NET库连接到服务器时,默认文件夹为/mif/stud3/2014/rira1874
。当我执行
res = ssh.CreateCommand("cd existingFolder").Execute();
Console.WriteLine(res);
它仍然保留在默认连接文件夹中。这里有什么问题?
完整代码:
public void ConnectWithPassword(string username, string password, string domain, int port)
{
bool i = true;
using (var ssh = new SshClient(CreatePasswordConnectionInfo(username, password, domain)))
{
try
{
ssh.Connect();
if (ssh.IsConnected)
{
while(i == true)
{
string res = Regex.Replace(ssh.CreateCommand("pwd").Execute(), @"\r\n?|\n", "");
Console.Write(res + ": ");
res = ssh.CreateCommand(Console.ReadLine()).Execute();
Console.WriteLine(res);
}
}
else {
Console.WriteLine("Not connected");
}
ssh.Disconnect();
}
catch (Exception e)
{
Console.WriteLine("Exception caught: {0}", e);
}
}
}
答案 0 :(得分:4)
尝试执行以下操作
string cmdstr = "cd /etc; ls -la";
ssh.Connect();
var cmd = ssh.RunCommand(cmdstr);
var result = cmd.Result;
基本上ssh.net不允许/支持(我猜)。替代方案是您可以更改到目录并执行所需的相应命令。 如果你需要执行一些文件,只需使用上面的例子“cd / etc; ./yourFile”。确保包含分号“;”所以你可以继续执行。
答案 1 :(得分:1)
您是否检查了目录列表以确保您实际上仍在“/ mif / stud3 / 2014 / rira1874”中?看起来你在哪里进入SSH是一个* nix框;根据{{1}}行做出这个假设。如果是这种情况,有时在控制台上返回/显示的目录列表将不会更改。例如,如果我有一个具有以下PWD ssh.CreateCommand("pwd").Execute()
的控制台,并且我尝试将目录更改为/user/me/home: $
,我的控制台可能仍然显示我仍在/developer/
当我真的在/user/me/home
,但/user/me/home/developer
会另外显示。
基本上,找到一种方法来确保你实际上没有更改目录,并且命令返回的值不只是让你失望。