匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

使用Python和Shell脚本批量管理Linux服务器

使用Python和Shell脚本批量管理Linux服务器

在Linux服务器管理中,如果需要对多台服务器进行相同的操作,手动一个个登录操作显然非常耗时费力,这时候就需要使用批量管理的方法,而Python和Shell脚本是非常实用的工具,可以帮助管理员自动化操作,提高工作效率。

本文将介绍如何使用Python和Shell脚本批量管理Linux服务器,主要包括以下部分:

1. SSH登录服务器
2. 执行Linux命令
3. 远程复制文件
4. 修改远程文件
5. 停止和启动服务
6. 执行定时任务

1. SSH登录服务器

首先需要使用SSH登录到服务器,可以使用paramiko模块来实现,示例代码如下:

```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')
stdin, stdout, stderr = ssh.exec_command('hostname')
print(stdout.read().decode())
ssh.close()
```

其中,`paramiko.SSHClient()`用来创建SSH客户端对象,`ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())`用来自动添加新主机证书,`ssh.connect()`用来登录服务器,`stdin, stdout, stderr = ssh.exec_command()`用来执行命令,`print(stdout.read().decode())`用来输出执行结果,`ssh.close()`用来关闭连接。

2. 执行Linux命令

在登录了服务器之后,可以执行各种Linux命令,比如查看系统信息、安装软件、重启服务器等,示例代码如下:

```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')

# 查看系统信息
stdin, stdout, stderr = ssh.exec_command('uname -a')
print(stdout.read().decode())

# 安装软件
stdin, stdout, stderr = ssh.exec_command('apt-get install nginx -y')
print(stdout.read().decode())

# 重启服务器
stdin, stdout, stderr = ssh.exec_command('reboot')
print(stdout.read().decode())

ssh.close()
```

注意,在执行命令时需要考虑命令的安全性和正确性,避免执行过程中出现错误。

3. 远程复制文件

在服务器管理过程中,有时需要将本地文件复制到远程服务器上,或者将远程服务器上的文件复制到本地,可以使用`sftp`模块来实现,示例代码如下:

```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')
sftp = ssh.open_sftp()

# 本地文件复制到远程服务器
sftp.put('local_file.txt', '/root/remote_file.txt')

# 远程服务器文件复制到本地
sftp.get('/root/remote_file.txt', 'local_file.txt')

sftp.close()
ssh.close()
```

4. 修改远程文件

在服务器管理过程中,有时需要修改远程服务器上的文件,可以使用`sftp`模块或者`ssh`模块来实现,示例代码如下:

```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')

# 使用sftp修改远程文件
sftp = ssh.open_sftp()
file = sftp.file('/etc/nginx/nginx.conf', 'w')
file.write('修改后的内容')
file.close()
sftp.close()

# 使用ssh修改远程文件
stdin, stdout, stderr = ssh.exec_command('sed -i \'s/old_content/new_content/g\' /etc/nginx/nginx.conf')
ssh.close()
```

5. 停止和启动服务

在服务器管理过程中,有时需要停止和启动服务,可以使用`ssh`模块来实现,示例代码如下:

```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')

# 停止和启动服务
stdin, stdout, stderr = ssh.exec_command('systemctl stop nginx')
print(stdout.read().decode())
stdin, stdout, stderr = ssh.exec_command('systemctl start nginx')
print(stdout.read().decode())

ssh.close()
```

6. 执行定时任务

在服务器管理过程中,有时需要执行定时任务,可以使用`crontab`来实现,示例代码如下:

```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')

# 添加定时任务
stdin, stdout, stderr = ssh.exec_command('echo "* * * * * /usr/bin/python3 /root/test.py" >> /etc/crontab')
print(stdout.read().decode())

# 删除定时任务
stdin, stdout, stderr = ssh.exec_command('sed -i \'$d\' /etc/crontab')
print(stdout.read().decode())

ssh.close()
```

总结

本文介绍了如何使用Python和Shell脚本批量管理Linux服务器,包括SSH登录服务器、执行Linux命令、远程复制文件、修改远程文件、停止和启动服务以及执行定时任务等操作。这些方法可以帮助管理员自动化操作,提高工作效率,值得在实际工作中使用。