Browse Source

统一配置mysql密码

hongwenjun 3 years ago
parent
commit
51ee724b54
9 changed files with 319 additions and 100 deletions
  1. 9 89
      mysql/README.md
  2. 4 3
      mysql/addfile.py
  3. 45 0
      mysql/addvps.py
  4. 6 0
      mysql/conf.py
  5. 5 3
      mysql/getfile.py
  6. 6 5
      mysql/getsh.py
  7. 78 0
      mysql/mykcp.py
  8. 42 0
      mysql/mysql_connector.py
  9. 124 0
      mysql/sskcp.sh

+ 9 - 89
mysql/README.md

@@ -13,108 +13,28 @@ CREATE TABLE IF NOT EXISTS `text` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ```
 
-## 获取sql数据表 text 中所有脚本文件的代码
-![get.PNG][2]
-
-### `getsh.py`
+## 统一设置 MYSQL密码配置 `conf.py`
 ```
-import mysql.connector
-conn = mysql.connector.connect(
-  host="127.0.0.1",
-  user="user",
-  passwd="passwd"  )
-c = conn.cursor()
-c.execute("USE vps2022")
+# conn = mysql.connector.connect
 
-sql = 'SELECT * FROM text ORDER BY name'
-c.execute(sql)
-text = c.fetchall()
+host="188.188.188.188"
+user="root"
+passwd="passwd@passwd"
+port=3306
 
-def makefile(file, str):
-  f = open(file, 'w')
-  f.write(str); f.close()
+```
 
-for i in range(len(text)):
-  file=text[i][0]
-  file_str = text[i][3]
-  makefile(file, file_str)
-  print(file, "\t保存完成!")
+## 获取sql数据表 text 中所有脚本文件的代码 `getsh.py`
+![get.PNG][2]
 
-conn.close()
-```
 
 ## 选择下载一个文件 `getfile.py`
 ![getfile.PNG][4]
 
-```
-import mysql.connector
-conn = mysql.connector.connect(
-    host="127.0.0.1",
-    user="user",  passwd="pswd",
-    database="vps2022",  buffered = True  )
-c = conn.cursor()
-
-sql = 'SELECT name FROM text'
-c.execute(sql)
-names = c.fetchall()
-
-# 显示所有文件名,以供下载
-for i in range(len(names)):
-    print(names[i][0], end='  ')
-
-print('\n:: 选择一个文件下载,输入文件名: ', end='')
-name = input().strip()
-
-sql = 'SELECT * FROM text WHERE name="' + name +'"'
-c.execute(sql)
-text = c.fetchall()
-
-def makefile(file, str):
-    f = open(file, 'w')
-    f.write(str); f.close()
-
-for i in range(len(text)):
-    file=text[i][0]
-    file_str = text[i][5]
-    makefile(file, file_str)
-    print(file, "\t保存完成!")
-
-conn.close()
-```
 
 ## 使用 `addfile.py` 可以批量上传文件到数据库中
 ![addfile.PNG][6]
 
-```
-import sys, glob
-import mysql.connector
-conn = mysql.connector.connect(
-    host="127.0.0.1",
-    user="user",  passwd="passwd",
-    database="vps2022",  buffered = True  )
-c = conn.cursor()
-
-files = [] 
-for f in sys.argv[1:]:
-    files = files + glob.glob(f)
-
-def readfile(file):
-    f = open(file, 'r')
-    str = f.read(); f.close()
-    return str
-
-for file in files:
-    file_str = readfile(file)
-    row =(file, file_str)
-    
-    c.execute("DELETE FROM text WHERE name=%s ", (file,) )
-    c.execute('INSERT INTO text VALUES (%s,%s)', row)
-    print("FontName: " + file + "   ....OK")
-
-conn.commit()
-conn.close()
-```
-
 
   [1]: https://262235.xyz/usr/uploads/2021/12/1283040383.png
   [2]: https://262235.xyz/usr/uploads/2021/12/2063028572.png

+ 4 - 3
mysql/addfile.py

@@ -1,9 +1,10 @@
 import sys, glob
 import mysql.connector
+import conf
 conn = mysql.connector.connect(
-    host="127.0.0.1",
-    user="user",  passwd="passwd",
-    database="vps2022",  buffered = True  )
+    host=conf.host, user=conf.user,  
+    passwd=conf.passwd, port=conf.port,
+    database="vps2022",  buffered = True)
 c = conn.cursor()
 
 files = [] 

+ 45 - 0
mysql/addvps.py

@@ -0,0 +1,45 @@
+import sys, mysql.connector
+Green = '\033[32m'; Red = '\033[31m'; GreenBG = '\033[42;37m'; RedBG = '\033[41;37m'; Yellow = '\033[0;33m'; SkyBlue = '\033[0;36m'; Font = '\033[0m'
+# 连接MYSQL数据库
+import conf
+conn = mysql.connector.connect(
+    host=conf.host, user=conf.user,  
+    passwd=conf.passwd, port=conf.port,
+    database="vps2022",  buffered = True)
+c = conn.cursor()
+
+# sql 获取 vps 数据 , 显示 vps 数据
+def display_data(c):
+    print(GreenBG, ":: 显示 MySQL 数据库 vps2022 中获节点表  ")
+    sql = 'SELECT * FROM vps'
+    c.execute(sql)
+    cnt=0  ; sk = list()
+    for row in c.fetchall():
+        print(SkyBlue, cnt,'节点:', Yellow, row)
+        sk.append(list(row));  cnt+=1
+display_data(c)
+
+while True :
+    print(GreenBG, ":: 添加节点:", SkyBlue, 'add <ip port passwd ss_port info>  ', RedBG, '保存和退出: quit', Font, '\n $ ', end='')
+    cmd = input().strip()
+    cmd = cmd.replace(',', ' ').replace('\'', '')
+    arg = cmd.split()
+
+    if (len(arg)==0):
+        continue
+
+    if arg[0] == 'add' and len(arg)==6:
+        row =(arg[1], arg[2], arg[3], arg[4], arg[5])
+        c.execute('INSERT INTO vps VALUES (%s,%s,%s,%s,%s)', row)
+
+    if arg[0] == 'quit' :
+        conn.commit()
+        display_data(c)
+        sys.exit(0)
+
+# 使用命令  python3 addvps.py < iplist.txt  或者 cat iplist.txt | python3 addvps.py
+# 批量输入数据  iplist.txt  格式 add  数据, 最后一行 quit
+# add  '111.188.188.188', '22', 'Pa55@SSL', '443', '111号NAT小鸡'
+# add  115.115.188.188 22 Pa55@SSL 443 115号NAT小鸡
+# add  118.115.188.188,22,Pa55@SSL,443,115号NAT小鸡
+# quit

+ 6 - 0
mysql/conf.py

@@ -0,0 +1,6 @@
+# conn = mysql.connector.connect
+
+host="188.188.188.188"
+user="root"
+passwd="passwd@passwd"
+port=3306

+ 5 - 3
mysql/getfile.py

@@ -1,8 +1,9 @@
 import mysql.connector
+import conf
 conn = mysql.connector.connect(
-    host="127.0.0.1",
-    user="user",  passwd="passwd",
-    database="vps2022",  buffered = True  )
+    host=conf.host, user=conf.user,  
+    passwd=conf.passwd, port=conf.port,
+    database="vps2022",  buffered = True)
 c = conn.cursor()
 
 sql = 'SELECT name FROM text'
@@ -31,3 +32,4 @@ for i in range(len(text)):
     print('FontName:', file, "\t保存完成!")
 
 conn.close()
+

+ 6 - 5
mysql/getsh.py

@@ -1,8 +1,9 @@
 import mysql.connector
+import conf
 conn = mysql.connector.connect(
-    host="127.0.0.1",
-    user="user",  passwd="passwd",
-    database="vps2022",  buffered = True  )
+    host=conf.host, user=conf.user,  
+    passwd=conf.passwd, port=conf.port,
+    database="vps2022",  buffered = True)
 c = conn.cursor()
 
 sql = 'SELECT * FROM text ORDER BY name'
@@ -17,6 +18,6 @@ for i in range(len(text)):
   file=text[i][0]
   file_str = text[i][1]
   makefile(file, file_str)
-  print(file, "\t�������!")
+  print(file, "\t保存完成!")
 
-conn.close()
+conn.close()

+ 78 - 0
mysql/mykcp.py

@@ -0,0 +1,78 @@
+import sys, os, mysql.connector
+# define Color 
+Green = '\033[32m'; Red = '\033[31m'; GreenBG = '\033[42;37m'; RedBG = '\033[41;37m'
+Yellow = '\033[0;33m'; SkyBlue = '\033[0;36m'; Font = '\033[0m'
+
+# 连接MYSQL数据库
+import conf
+conn = mysql.connector.connect(
+    host=conf.host, user=conf.user,  
+    passwd=conf.passwd, port=conf.port,
+    database="vps2022",  buffered = True)
+c = conn.cursor()
+
+# sql 获取 vps 数据 , 显示 vps 数据
+def display_data(c):
+  print(GreenBG, ":: 显示 MySQL 数据库 vps2022 中获节点表  ")
+  sql = 'SELECT * FROM vps ORDER BY ip'
+  c.execute(sql)
+  vps = c.fetchall()
+
+  cnt=0  ; sk = list()
+  for row in vps:
+    print(SkyBlue, cnt,'节点:', Yellow, row)
+    sk.append(list(row))
+    cnt+=1
+  print(Font)
+  return sk
+
+vps = display_data(c)
+print(SkyBlue, ":: 使用节点直接输入节点号数字 ")
+print(GreenBG, ":: 输入命令:", RedBG, "del <1> 删除节点 \n :: 添加节点:", SkyBlue, 'add <ip port passwd ss_port info>', Font)
+print(' $ ', end='')
+cmd = input().strip()
+cmd = cmd.replace(',', ' ').replace('\'', '')
+arg = cmd.split()
+# print(arg)
+
+if (len(arg)==0):
+  sys.exit(1)
+
+# 命令 del <1> 删除节点
+if arg[0] == 'del' :
+  id = int(arg[1])
+  row = vps[id]
+  c.execute("DELETE FROM vps WHERE ip=%s AND port=%s ", (row[0], row[1]) )
+  conn.commit()
+  print('\n'); display_data(c)
+  sys.exit(0)
+
+# 命令 add <ip port passwd ss_port info> 添加节点
+if arg[0] == 'add' and len(arg)==6:
+  row =(arg[1], arg[2], arg[3], arg[4], arg[5])
+  c.execute('INSERT INTO vps VALUES (%s,%s,%s,%s,%s)', row)
+  conn.commit()
+  print('\n'); display_data(c)
+  sys.exit(0)
+
+text = 'sskcp.sh'
+if text == 'sskcp.sh' :
+  sql = "SELECT * FROM text WHERE name ='sskcp.sh'"
+  c.execute(sql); row = c.fetchone(); text = row[1]
+ 
+def make_sskcp(sk, id):
+  cfg = sk[id]
+  str = '#!/bin/bash\n\n'
+  str += 'SERVER_IP=' + cfg[0] + '\nPORT=' + cfg[1] + '\nPASSWORD=' + cfg[2] + '\nSS_PORT=40000\nSOCKS5_PORT=1080\n'
+  print(str)
+  str += text
+  return str
+
+if int(arg[0]) < len(vps) and len(arg)==1:
+  str = make_sskcp(vps, int(arg[0]))
+  f = open('sskcp.sh', 'w')
+  f.write(str); f.close()
+  os.system('bash sskcp.sh restart')
+  sys.exit(0)
+
+conn.close()

+ 42 - 0
mysql/mysql_connector.py

@@ -0,0 +1,42 @@
+#  Python安装 MySQL Connector 驱动程序,访问 MySQL 数据库和查询修改 WordPress 博客文章
+#  https://262235.xyz/index.php/archives/707/
+
+import mysql.connector
+
+mydb = mysql.connector.connect(
+  host="localhost",
+  user="root",
+  passwd="yourpassword"
+)
+
+## 使用 `SHOW DATABASES` 语句列出系统中的所有数据库
+c = mydb.cursor()
+c.execute("SHOW DATABASES")
+for x in c:
+    print(x)
+
+## WordPress 存放文章的数据表名 wp_posts,使用 SELECT 查询博客的文章
+c = mydb.cursor()
+c.execute("USE wordpress")
+c.execute("SELECT * FROM wp_posts LIMIT 5")
+result = c.fetchall()
+for x in result:
+  print(x)
+
+### 选取列-只选择表中的某些列,请使用 "SELECT" 语句,后跟列名
+c.execute("SELECT ID, post_title, guid, post_type  FROM wp_posts LIMIT 5")
+result = c.fetchall()
+for x in result: print(x)
+
+### 用 fetchall() 方法,该方法从最后执行的语句中获取所有行
+### 如果只需一行或者逐行,可以使用 fetchone() 方法, 将返回结果的第一行
+c.execute("SELECT ID, post_title, guid, post_type  FROM wp_posts LIMIT 5")
+result = c.fetchone()
+print(result)
+result = c.fetchone();  print(result)
+
+### WordPress文章内容批量替换文字的方法 更新表: 使用 UPDATE 语句来更新表中的现有记录  
+sql = "UPDATE wp_posts SET post_content = replace(post_content,'nginx','nginx-php')"
+c.execute(sql)
+mydb.commit()
+print(c.rowcount, "record(s) affected")

+ 124 - 0
mysql/sskcp.sh

@@ -0,0 +1,124 @@
+# https://git.io/sskcp.sh
+
+start(){
+  # SS + KcpTun + Udp2RAW
+    udp2raw -c -r$SERVER_IP:$PORT -l0.0.0.0:4000 -k $PASSWORD --raw-mode  faketcp -a >> /var/log/udp2raw.log &
+    kcp-client -r 127.0.0.1:4000 -l :$SS_PORT --key $PASSWORD -mode fast2 -mtu 1300  >> /var/log/kcp-client.log  2>&1 &
+
+  # ss-local -s 服务器IP地址  -p 服务器端口  -b 绑定本地IP  -l 本地端口  -k 密码  -m 加密方式 [-c 配置文件]
+    ss-local -s 127.0.0.1 -p $SS_PORT -b 0.0.0.0 -l $SOCKS5_PORT -k $PASSWORD -m aes-256-gcm  -t 300 >> /var/log/ss-local.log &
+
+  # status
+}
+
+stop(){
+    killall -9 kcp-client
+    killall -9 udp2raw
+    killall -9 ss-local
+}
+
+restart(){
+    stop
+    start
+}
+
+help(){
+    echo -e "${SkyBlue}:: Source: ${Green}https://git.io/sskcp.sh  ${Font}By 蘭雅sRGB"
+    echo -e "${SkyBlue}:: Usage: ${GreenBG} bash sskcp.sh ${Yellow} [start|stop|restart|service|set] ${Font}"
+    echo
+}
+
+status(){
+    # log 和 命令行参数
+    cat /var/log/udp2raw.log | tail
+    cat /var/log/kcp-client.log | tail
+    cat /var/log/ss-local.log | tail
+    echo
+
+    if [[ -e /etc/openwrt_release ]]; then
+       ps | grep  -e udp2raw -e kcp-client -e ss-local
+    else
+       ps ax | grep --color=auto -e udp2raw -e kcp-client -e ss-local
+    fi
+    echo
+}
+
+setconf()
+{
+    echo -e "${SkyBlue}:: 修改脚本sskcp.sh记录参数,按${RedBG}<Enter>${SkyBlue}不修改! ${Yellow}"
+    head -n 6 sskcp.sh | tail -n 4  &&  echo -e "${SkyBlue}"
+
+    read -p ":: 1.请输入远程服务器IP: "  sv_ip
+    read -p ":: 2.请输入udp2raw 端口: "  port
+    read -p ":: 3.请输入套接转发密码: "  passwd
+    read -p ":: 4.请输入 SS 服务端口: "  ss_port
+
+    if [[ ! -z "${sv_ip}" ]]; then
+        sed -i "s/^SERVER_IP=.*/SERVER_IP=${sv_ip}/g"  "sskcp.sh"
+    fi
+    if [[ ! -z "${port}" ]]; then
+        sed -i "s/^PORT=.*/PORT=${port}/g"  "sskcp.sh"
+    fi
+    if [[ ! -z "${passwd}" ]]; then
+        sed -i "s/^PASSWORD=.*/PASSWORD=${passwd}/g"  "sskcp.sh"
+    fi
+    if [[ ! -z "${ss_port}" ]]; then
+        sed -i "s/^SS_PORT=.*/SS_PORT=${ss_port}/g"  "sskcp.sh"
+    fi
+
+    echo -e "${Yellow}" && head -n 7 sskcp.sh | tail -n 5 &&  echo -e "${Font}"
+}
+
+system_def(){
+	Green="\033[32m"  && Red="\033[31m" && GreenBG="\033[42;37m" && RedBG="\033[41;37m"
+	Font="\033[0m"  && Yellow="\033[0;33m" && SkyBlue="\033[0;36m"
+}
+
+systemd_service(){
+    # 安装启动服务
+    cat <<EOF >/usr/lib/systemd/system/sskcp.service
+[Unit]
+Description=sskcp.sh Service
+After=network.target
+
+[Service]
+Type=forking
+User=root
+ExecStart=nohup /root/sskcp.sh start &
+ExecReload=sh /root/sskcp.sh stop
+
+[Install]
+WantedBy=multi-user.target
+
+EOF
+	chmod +x  /root/sskcp.sh
+	systemctl enable sskcp.service
+	systemctl start sskcp.service
+	systemctl status sskcp.service
+}
+
+# 脚本命令参数
+system_def
+if [[ $# > 0 ]]; then
+    key="$1"
+    case $key in
+        start)
+          start
+        ;;
+        stop)
+          stop
+        ;;
+        restart)
+          restart
+        ;;
+	service)
+          systemd_service
+        ;;
+        set)
+          setconf
+        ;;
+    esac
+else
+    status
+fi
+help