Files
gfil-blog/add_robots_location.py

71 lines
2.0 KiB
Python

"""Safely add robots.txt location block to gfil-lab.com Nginx config"""
import paramiko
JD_HOST = "111.228.37.165"
JD_USER = "root"
JD_PASS = "Liudecai110"
LAB_HOST = "216.144.233.14"
LAB_USER = "root"
LAB_PASS = "Kt9V72Tx2c48ChikKU"
jd = paramiko.SSHClient()
jd.set_missing_host_key_policy(paramiko.AutoAddPolicy())
jd.connect(JD_HOST, port=22, username=JD_USER, password=JD_PASS,
timeout=20, banner_timeout=60, allow_agent=False, look_for_keys=False)
# Use python on remote to do precise insertion instead of sed
cmd = f"""sshpass -p '{LAB_PASS}' ssh -o StrictHostKeyChecking=no {LAB_USER}@{LAB_HOST} '
# Backup first
cp /etc/nginx/sites-enabled/gfil /etc/nginx/sites-enabled/gfil.bak.before-robots
# Use python to insert robots.txt block precisely before "location / {"
python3 -c "
import re
with open(\"/etc/nginx/sites-enabled/gfil\", \"r\") as f:
content = f.read()
robots_block = \"\"\" location = /robots.txt {
alias /var/www/gfil-lab/robots.txt;
default_type text/plain;
}
\"\"\"
# Insert before the first \"location / {\"
if \"robots.txt\" not in content:
content = content.replace(\" location / {\", robots_block + \" location / {\")
with open(\"/etc/nginx/sites-enabled/gfil\", \"w\") as f:
f.write(content)
print(\"INSERTED robots.txt block\")
else:
print(\"robots.txt block already exists, skipping\")
"
# Verify
echo "=== Updated config ==="
cat /etc/nginx/sites-enabled/gfil
# Test
nginx -t 2>&1
if [ $? -eq 0 ]; then
systemctl reload nginx
echo "SUCCESS: Nginx reloaded"
else
echo "FAILED: rolling back"
cp /etc/nginx/sites-enabled/gfil.bak.before-robots /etc/nginx/sites-enabled/gfil
nginx -t 2>&1
systemctl reload nginx
echo "Rolled back to original"
fi
# Verify site still works
curl -s -o /dev/null -w "Site: HTTP %{{http_code}}" http://localhost/ 2>/dev/null
# Verify robots.txt
curl -s http://localhost/robots.txt 2>/dev/null | head -5
'"""
stdin, stdout, stderr = jd.exec_command(cmd, timeout=30)
print(stdout.read().decode())
jd.close()