Я использую этот Code Example, чтобы выполнять команды в оболочке Tcl.Выполнение команд с использованием expect4j
Если вы посмотрите на основной функции вниз страницы, способ выполнения команд:
SSHClient ssh = new SSHClient("linux_host", "root", "password");
List<String> cmdsToExecute = new ArrayList<String>();
cmdsToExecute.add("ls");
cmdsToExecute.add("pwd");
cmdsToExecute.add("mkdir testdir");
String outputLog = ssh.execute(cmdsToExecute);
В моей программе я делаю:
SSHClient ssh = new SSHClient("linux_host", "root", "password");
List<String> cmdsToExecute = new ArrayList<String>();
cmdsToExecute.add("bpsh"); // open Tcl Shell
cmdsToExecute.add("set bps [bps::connect ... ]"); // Tcl shell commands
String outputLog = ssh.execute(cmdsToExecute);
Теперь проблема заключается в том, что я не может выполнять команды из массива без выхода из оболочки Tcl.
смысл, если я запускаю этот код:
SSHClient ssh = new SSHClient("linux_host", "root", "password");
List<String> cmdsToExecute = new ArrayList<String>();
cmdsToExecute.add("bpsh"); // open Tcl Shell
cmdsToExecute.add("set bps [bps::connect ... ]"); // Tcl shell commands
String outputLog = ssh.execute(cmdsToExecute);
cmdsToExecute.clear();
cmdsToExecute.add("set sf [$bps createSuperflow ... ]");
String outputLog = ssh.execute(cmdsToExecute);
я получить, что после первого выполнения на удаленном компьютере, она вышла из первой TCL оболочки и вернулась к исходной оболочке, а во втором Казнить пытается запустить:
"установить sf [$ bps createSuperflow ..." в исходной оболочке.
Я предполагаю, что строка:
cmdsToExecute.add ("bpsh");
не существует.
Код ожидаемого4j, который я использую, находится в ссылке выше, может ли кто-нибудь сказать мне, что мне нужно изменить, чтобы я мог выполнять множество команд с помощью ssh.execute(), не выходя из оболочки Tcl?