linux远程除了ssh,Linux下非交互式远程执行命令脚本(比ssh更好的方式)
时间: 2023-07-12 16:32:02 浏览: 272
除了 SSH 之外,还有很多方式可以在 Linux 下进行非交互式远程执行命令或脚本。
1. 使用 Telnet:Telnet 是一种可以在网络上进行远程登录的协议,可以使用 telnet 命令在远程主机上执行命令或脚本。但是,由于 Telnet 不支持加密,因此不太安全。
2. 使用 rsh(remote shell):rsh 是一种远程 shell,可以使用 rsh 命令在远程主机上执行命令或脚本。但是,由于 rsh 不支持加密,因此也不太安全。
3. 使用 ssh 的批处理模式:ssh 支持批处理模式,可以使用 ssh 命令在远程主机上执行命令或脚本,而且支持加密,比较安全。可以使用以下命令执行脚本:
```
ssh user@host 'bash -s' < script.sh
```
4. 使用 Ansible:Ansible 是一种配置管理和自动化工具,可以批量地在多个远程主机上执行命令或脚本,并且支持加密,非常安全。可以使用以下命令执行脚本:
```
ansible all -m script -a "script.sh"
```
以上是几种非交互式远程执行命令或脚本的方式,您可以根据实际情况选择适合您的方法。
相关问题
python 登录远程linux并执行本地shell脚本
要在 Python 中登录远程 Linux 并执行本地 shell 脚本,可以使用 `paramiko` 模块来实现。以下是一个简单的示例代码:
```python
import paramiko
# 连接远程服务器
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='your_host', port=22, username='your_username', password='your_password')
# 执行 shell 脚本
stdin, stdout, stderr = ssh.exec_command('bash -s' < ./test.sh')
print(stdout.readlines())
# 关闭连接
ssh.close()
```
在这个例子中,我们首先使用 `paramiko` 模块连接到远程服务器。然后,我们使用 `exec_command()` 方法执行 shell 命令,其中包括 `./test.sh`。最后,我们打印出命令执行的结果,并关闭连接。
需要注意的是,要使用 `exec_command()` 方法在远程服务器上执行命令,必须在命令字符串前面添加 `bash -s`。这是因为 `exec_command()` 方法默认执行的是非交互式 shell,而这个参数可以让我们强制使用交互式 shell,从而能够执行一些需要交互的命令,如 shell 脚本的执行。
python 登录远程linux并执行本地多个包含调用关系的shell脚本
要在 Python 中登录远程 Linux 并执行本地多个包含调用关系的 shell 脚本,可以使用 `paramiko` 模块来实现。以下是一个简单的示例代码:
```python
import paramiko
# 连接远程服务器
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='your_host', port=22, username='your_username', password='your_password')
# 执行 shell 脚本
stdin, stdout, stderr = ssh.exec_command('bash -s' < ./test1.sh')
print(stdout.readlines())
stdin, stdout, stderr = ssh.exec_command('bash -s' < ./test2.sh')
print(stdout.readlines())
# 关闭连接
ssh.close()
```
在这个例子中,我们首先使用 `paramiko` 模块连接到远程服务器。然后,我们使用 `exec_command()` 方法执行多个 shell 命令,其中包括 `./test1.sh` 和 `./test2.sh`。最后,我们打印出命令执行的结果,并关闭连接。
需要注意的是,要使用 `exec_command()` 方法在远程服务器上执行命令,必须在命令字符串前面添加 `bash -s`。这是因为 `exec_command()` 方法默认执行的是非交互式 shell,而这个参数可以让我们强制使用交互式 shell,从而能够执行一些需要交互的命令,如 shell 脚本的执行。另外,如果多个 shell 脚本之间有调用关系,需要按照调用关系依次执行,以确保整个过程顺利完成。