python paramiko nohup启动不成功
时间: 2024-05-04 11:16:44 浏览: 7
启动远程主机上的进程时,nohup 命令可以使进程在后台运行,并且即使在退出 ssh 会话后也不会被停止。在使用 paramiko 库启动远程进程时,可以使用以下代码:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='remote_host', username='username', password='password')
command = 'nohup python /path/to/your/script.py > /dev/null 2>&1 &'
stdin, stdout, stderr = ssh.exec_command(command)
# 检查启动是否成功
if stderr.readlines():
print('启动失败')
else:
print('启动成功')
```
在上面的代码中,`command` 变量包含启动进程的命令。`> /dev/null 2>&1 &` 将所有输出重定向到 `/dev/null`,并将进程放入后台运行。
如果启动失败,`stderr` 变量将包含错误消息。否则,进程将在远程主机上后台运行,而且不会在退出 ssh 会话后停止。
相关问题
Python paramiko 显示不全
如果您在使用 Python 的 paramiko 库时,遇到了输出内容显示不全的问题,可以尝试以下两种方法:
1. 设置终端的窗口大小
在使用 paramiko 连接远程主机时,可以通过设置终端的窗口大小来解决输出内容显示不全的问题。例如:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username='username', password='password')
stdin, stdout, stderr = ssh.exec_command('command')
# 设置终端窗口大小
stdin.channel.resize_pty(width=200, height=500)
# 输出结果
print(stdout.read().decode())
```
2. 使用 `invoke_shell()` 方法
另外一种解决方法是使用 `invoke_shell()` 方法,它会创建一个交互式的 shell,可以不受限制地输出所有内容。例如:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username='username', password='password')
# 创建交互式 shell
shell = ssh.invoke_shell()
# 执行命令
shell.send('command\n')
# 输出结果
print(shell.recv(1024).decode())
```
这两种方法都可以解决 paramiko 输出内容显示不全的问题,您可以根据实际情况选择使用哪种方法。
python paramiko使用_python Paramiko使用示例
好的,我可以为您提供一个 Python Paramiko 的使用示例。首先,您需要安装 Paramiko 库,可以使用以下命令在命令行中安装:
```
pip install paramiko
```
接下来,您可以使用以下示例代码连接到远程服务器并执行命令:
```python
import paramiko
# 创建 SSH 客户端
ssh = paramiko.SSHClient()
# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接到远程服务器
ssh.connect('remote_server_ip', username='username', password='password')
# 执行远程命令
stdin, stdout, stderr = ssh.exec_command('ls -l')
# 读取命令输出
output = stdout.read().decode()
# 打印输出结果
print(output)
# 关闭 SSH 连接
ssh.close()
```
这是一个简单的示例,您可以根据需要进行修改和扩展。