SharpSSH с постоянными соединениями ShellExec

Я использую SharpSSH для подключения к SSH-серверу и пробовал использовать как SshShell, так и SshExec. Мне нужно иметь возможность принимать ряд команд и отправлять их на сервер по порядку, поэтому SshShell на самом деле не делает то, что мне нужно, так как мне придется все время спорить с потоками, и кажется, что это будет немного сложно. кладж. Итак, я попробовал SshExec, но обнаружил одну проблему: каждый раз, когда я отправляю команду, создается новое соединение и теряется контекст последней команды. Например, если я выполнил следующие команды:

pwd
cd .ssh
pwd

Я ожидал, что он выведет

/home/adam

/home/adam/.ssh

Но вместо этого он просто выводит «/home/adam» оба раза, что означает, что изменение каталога было потеряно между ними.

Есть ли способ настроить это так, чтобы он поддерживал постоянное соединение с сервером SSH, пока я не скажу ему отключиться?


person Adam Haile    schedule 29.06.2010    source источник


Ответы (2)


Сделай это:

exec.RunCommand("pwd; cd Desktop; pwd")

Я не уверен, как выполнять расширенные команды, но я попробовал это, и он выводит:

/Users/MyUser
/Users/MyUser/Desktop
person kamranicus    schedule 20.01.2011
comment
Это именно то, что я должен был сделать, чтобы заставить это работать. Спасибо! - person BrMcMullin; 15.03.2011

Чтобы перейти в скрытый каталог (любой каталог, начинающийся с точки (.)), вам необходимо заключить значение в кавычки.

Согласно документации:

4) Если первым компонентом операнда каталога является точка или точка-точка, перейдите к шагу 6.

6) Задайте для curpath строку, образованную конкатенацией значения PWD, символа косой черты и операнда.

Короче говоря, cd '.ssh' должен помочь.

person Chris Shouts    schedule 29.06.2010
comment
Я опечатался, и это был просто пример. Однако проблема остается той же... любой пример, который вы хотите, контекст не сохраняется. - person Adam Haile; 29.06.2010