linux 写一个ssh连接上就执行的命令
时间: 2023-08-10 15:05:28 浏览: 53
可以通过在ssh命令中添加要执行的命令来实现连接上就执行的效果。具体命令如下:
```
ssh user@host 'command'
```
其中,user为ssh连接的用户名,host为要连接的主机名或IP地址,command为要执行的命令。
例如,如果要在连接到远程主机后执行ls命令,可以使用如下命令:
```
ssh user@host 'ls'
```
这样,当ssh连接成功后,就会自动执行ls命令并返回结果。
相关问题
写一个bat脚本自动连接linux命令,ssh自动连接执行命令
好的,以下是一个简单的批处理脚本示例,它可以通过ssh连接到Linux远程主机并执行命令:
```
@echo off
REM 设置ssh连接参数
set host=192.168.1.100
set user=username
set password=yourpassword
set command=ls
REM 连接ssh并执行命令
echo Connecting to %host%...
sshpass -p %password% ssh %user%@%host% %command%
echo Done.
```
在这个脚本中,我们使用了sshpass工具来自动输入密码,因此需要在系统中安装sshpass。此外,您需要将主机名、用户名、密码和要执行的命令替换为实际值。
请注意,此脚本仅用于示范用途,并未经过充分测试,因此在实际使用时可能需要进行修改和优化。
java使用ssh连接linux并执行命令
你可以使用JSch库来实现Java与Linux服务器之间的SSH连接。以下是一个简单的示例代码,可以连接到Linux服务器并执行命令:
```java
import com.jcraft.jsch.*;
public class SSHConnection {
public static void main(String args[]) {
String host = "your_host_name";
String user = "your_user_name";
String password = "your_password";
try {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
String command = "ls -l";
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.connect();
byte[] tmp = new byte[1024];
while (true) {
while (in.available() > 0) {
int i = in.read(tmp, 0, 1024);
if (i < 0) {
break;
}
System.out.print(new String(tmp, 0, i));
}
if (channel.isClosed()) {
if (in.available() > 0) {
continue;
}
System.out.println("exit-status: " + channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
}
}
channel.disconnect();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的示例代码中,我们首先创建一个`JSch`对象,并使用该对象创建一个`Session`对象。我们还需要设置连接的服务器主机名,用户名和密码。在此之后,我们使用`setConfig`方法禁用了严格主机密钥检查。这是因为当第一次连接到一个主机时,JSch会检查主机密钥,如果没有保存,则会弹出一个警告。通过禁用此功能,我们可以避免弹出这个警告。
接下来,我们创建一个`ChannelExec`对象来执行命令。我们已将要执行的命令设置为`ls -l`。然后,我们使用`channel.connect()`方法连接到服务器,并使用`getInputStream()`方法获取命令的输出流。接下来,我们循环读取输出流中的数据,并在控制台上打印出来。最后,我们检查通道是否关闭,并打印出退出状态码。最后,我们断开与服务器的连接。
请注意,这只是一个简单的示例代码,你需要根据你的实际情况进行修改。