如何快速实现懒人脚本与服务器的对接?

要对接服务器执行自动化任务,可以使用脚本通过 SSH/SFTP 协议进行交互,以下是懒人脚本对接服务器的完整指南:

懒人脚本怎么对接服务器

核心方案:使用 Python + Paramiko 库

import paramiko
服务器配置
HOST = "your.server.ip"
PORT = 22
USER = "username"
PASSWORD = "password"  # 建议改用密钥认证
KEY_PATH = "/path/to/private_key"  # 可选密钥路径
1. 创建SSH客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
2. 连接服务器(密码/密钥二选一)
ssh.connect(HOST, PORT, USER, PASSWORD) 
或使用密钥:ssh.connect(HOST, PORT, USER, key_filename=KEY_PATH)
3. 执行命令示例
stdin, stdout, stderr = ssh.exec_command("ls -l /tmp")
print("命令输出:")
print(stdout.read().decode())
4. 文件传输 (SFTP)
sftp = ssh.open_sftp()
上传文件
sftp.put("local_file.txt", "/remote/path/file.txt")
下载文件
sftp.get("/remote/path/file.txt", "local_copy.txt")
sftp.close()
5. 关闭连接
ssh.close()

关键步骤详解

准备工作

- 确保服务器开启 SSH 服务(默认端口 22)

- 生成 SSH 密钥对(更安全):

  ssh-keygen -t rsa
  ssh-copy-id user@server_ip  # 上传公钥

安装必要库

pip install paramiko  # Python SSH库

核心功能实现

A. 执行远程命令

def run_command(cmd):
    _, stdout, stderr = ssh.exec_command(cmd)
    exit_status = stdout.channel.recv_exit_status()
    if exit_status != 0:
        error = stderr.read().decode()
        raise Exception(f"Command failed: {error}")
    return stdout.read().decode()
result = run_command("df -h")
print("磁盘使用情况:\n", result)

B. 文件管理

懒人脚本怎么对接服务器
上传目录
def upload_dir(local_dir, remote_dir):
    for root, dirs, files in os.walk(local_dir):
        rel_path = os.path.relpath(root, local_dir)
        remote_path = os.path.join(remote_dir, rel_path)
        
        try: 
            sftp.mkdir(remote_path) 
        except: 
            pass
        
        for file in files:
            local_file = os.path.join(root, file)
            remote_file = os.path.join(remote_path, file)
            sftp.put(local_file, remote_file)

C. 交互式会话

执行需要交互的命令
channel = ssh.invoke_shell()
channel.send("sudo apt update\n")
channel.send("your_password\n")  # 注意安全风险
time.sleep(2)
output = channel.recv(9999).decode()
print(output)

安全增强建议

1、改用密钥认证

   private_key = paramiko.RSAKey.from_private_key_file(KEY_PATH)
   ssh.connect(HOST, PORT, USER, pkey=private_key)

2、敏感信息处理

- 使用环境变量存储密码

- 配置文件设置权限chmod 600 config.ini

懒人脚本怎么对接服务器

3、防火墙设置

- 限制 SSH 访问 IP 白名单

- 修改默认 SSH 端口

替代方案(无需编程)

1. 使用 Shell 脚本 + sshpass

安装 sshpass
sudo apt install sshpass
自动化登录执行
sshpass -p 'password' ssh user@host "ls -l > result.txt"
文件传输
sshpass -p 'password' scp local.txt user@host:/remote/path/

使用自动化工具

Ansible:专业服务器管理工具

Fabric:Python 自动化部署库

典型应用场景

1、自动部署代码:git pull && restart service

2、日志下载分析

3、定时备份数据库

4、批量服务器状态监控

>注意:生产环境务必使用密钥认证而非密码,敏感操作建议添加二次验证。

根据需求复杂度选择合适方案,简单任务用 shell 脚本即可,复杂操作推荐 Python + Paramiko。

文章摘自:https://idc.huochengrm.cn/fwq/12775.html

评论

精彩评论
  • 2025-08-10 13:50:14

    要快速实现懒人脚本与服务器的对接,首先确保脚本支持远程调用,然后通过API接口与服务器交互,配置好网络通信,最后进行测试确保脚本稳定运行。