在 Juniper 上通过 SSH 执行多个脚本命令 OS
Multiple script commands through SSH on Juniper OS
我的问题是关于网络设备,尤其是 Juniper OS。
我想在交换机上通过 SSH 执行很多命令。
而不是手动,使用脚本。
但是,当我通过 SSH(例如:'configure')推送命令来操作软件配置时,它确实改变了提示。
下一个命令,仅在这个级别的配置中可用,不起作用,因为自上次命令以来升级肯定没有注册,所以新命令 = 回到初始提示符。
Ruby 中 net/ssh 的示例:
ssh = Net::SSH.start("X.X.X.X", LOGIN, :password => PASSWORD)
ssh.exec!("configure") # -> Entering configuration mode
ssh.exec!("set system services telnet") # -> error: unknown command: set
ssh.close
在 Juniper ILC 上,没有“&”或“;”添加多个命令。
是否可以在这种命令中插入一个回车return,然后将所有命令放在一个请求中?
否则我如何执行多个命令,并在它们之间保持 link?
提前致谢。
好的,我找到的唯一解决方案是将指令连接成一个连接。
示例:
ssh.exec!('configure;
set system services telnet;
delete system services web-management;
set system login class READ permissions view-configuration;
set system login class READ allow-commands show;
...
commit;')
希望这对某些人有所帮助,请不要犹豫,改进它!
我知道它是关于 Ruby 但我希望我在 Java 中的调查结果可能有用。我在 eBay/parallec 中使用了这样的构造(我认为在 JSch 中它也可以工作):
public static void sshVmWithPassword() {
ParallelClient pc = new ParallelClient();
pc.prepareSsh().setTargetHostsFromString(HOST)
.setSshCommandLine("show version;\nshow log")
.setSshUserName(USERNAME)
.setSshPassword(PASSWORD)
.execute(new ParallecResponseHandler() {
public void onCompleted(ResponseOnSingleTask res,
Map<String, Object> responseContext) {
System.out.println("Responose:" + res.toString()
+ " host: " + res.getHost()
+ " errmsg: " + res.getErrorMessage());
}
});
pc.releaseExternalResources();
}
我的问题是关于网络设备,尤其是 Juniper OS。 我想在交换机上通过 SSH 执行很多命令。 而不是手动,使用脚本。 但是,当我通过 SSH(例如:'configure')推送命令来操作软件配置时,它确实改变了提示。 下一个命令,仅在这个级别的配置中可用,不起作用,因为自上次命令以来升级肯定没有注册,所以新命令 = 回到初始提示符。
Ruby 中 net/ssh 的示例:
ssh = Net::SSH.start("X.X.X.X", LOGIN, :password => PASSWORD)
ssh.exec!("configure") # -> Entering configuration mode
ssh.exec!("set system services telnet") # -> error: unknown command: set
ssh.close
在 Juniper ILC 上,没有“&”或“;”添加多个命令。
是否可以在这种命令中插入一个回车return,然后将所有命令放在一个请求中?
否则我如何执行多个命令,并在它们之间保持 link?
提前致谢。
好的,我找到的唯一解决方案是将指令连接成一个连接。
示例:
ssh.exec!('configure;
set system services telnet;
delete system services web-management;
set system login class READ permissions view-configuration;
set system login class READ allow-commands show;
...
commit;')
希望这对某些人有所帮助,请不要犹豫,改进它!
我知道它是关于 Ruby 但我希望我在 Java 中的调查结果可能有用。我在 eBay/parallec 中使用了这样的构造(我认为在 JSch 中它也可以工作):
public static void sshVmWithPassword() {
ParallelClient pc = new ParallelClient();
pc.prepareSsh().setTargetHostsFromString(HOST)
.setSshCommandLine("show version;\nshow log")
.setSshUserName(USERNAME)
.setSshPassword(PASSWORD)
.execute(new ParallecResponseHandler() {
public void onCompleted(ResponseOnSingleTask res,
Map<String, Object> responseContext) {
System.out.println("Responose:" + res.toString()
+ " host: " + res.getHost()
+ " errmsg: " + res.getErrorMessage());
}
});
pc.releaseExternalResources();
}