VB+PHP实现在线修改Windows服务器的配置文件

2023-05-16

*本文仅供记录、存档备案用。


用途:某电话转接系统,需要每天修改配置文件、并重启服务端程序

原理:WEB用于展示修改界面,提交、保存配置文件的相关数据

            VB端用于定时轮训WEB上保存的数据,发现和本地不一致时则进行同步,并反馈日志到WEB端。

扩展:VB端可以用Python、Shell等进行改写,以适应多平台环境。


WEB端主要代码:

<?php

//--------------写预配置文件,记录日志--------------
function ty1921($phonenum,$date){
	$open=fopen("E:\WAMP\WWWROOT\XXXXXXXXX_callout.txt","w" );
	$open2=fopen("E:\WAMP\WWWROOT\XXXXXXXXX_callout_log.txt","a" );
	$open3=fopen("E:\WAMP\WWWROOT\XXXXXXXXX_callout_date.txt","w" );

	if(fwrite($open,$phonenum)){//预配置文件
		if(fwrite($open2,$phonenum."  ".date("Y-m-d H:i:s")."\r\n")){//写入日志
			if(!fwrite($open3,$date)){
				echo "ok";
			}else{
				$err="XXXXXXXXX_callout_date更新失败:".$date;
			}
		}else{
			$err="写入日志失败";
		};
	}else{
		$err="打开XXXXXXXXX_callout.txt失败";
	};

	fclose($open);
}
//--------------函数结束--------------
$phonenum=trim($_REQUEST['phonenum']);

//程序、网页 修改配置
if(!empty($_REQUEST['type']) and !empty($_REQUEST['phonenum'])){

	if(strlen($phonenum) == "11")
	{	//上面部分判断长度是不是11位
		$n = preg_match_all("/13[0-9]{1}\d{8}|15[0-9]\d{8}|18[0-9]\d{8}/",$phonenum,$array);
		ty1921($_REQUEST['phonenum'],$_REQUEST['date']);
		$err="设置成功!请查看日志";
	}else
	{
		$err="手机号码格式错误:".$_REQUEST['phonenum'];
	} 
}


?>

<form method="post" action="?type=web&date=<?=date("Y-m-d")?>">
<table align="center"><tr><td align="left">
<div style="width:500px;height:500px;background-color:eeeeee;text-align:left">
<h2>XXXXXXXXX 手机呼叫转移 设置系统</h2>

请输入转接号码:<input id="phonenum" name="phonenum" maxlength="11" οnkeyup="value=value.replace('0','0').replace('1','1').replace('2','2').replace('3', '3').replace('4','4').replace('5','5').replace('6','6').replace('7', '7').replace('8','8').replace('9','9');" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace('0','0').replace('1','1').replace('2','2').replace('3', '3').replace('4','4').replace('5','5').replace('6','6').replace('7', '7').replace('8','8').replace('9','9'))" /> 

<br><font size="2" color="555555">*修改后,生效时间为<b>2</b>分钟,请2分钟以后再进行测试</font>
<br><br>
<input type="submit" value="                 修 改                 " >
<?

	$file_name="E:\WAMP\WWWROOT\XXXXXXXXX_callout.txt";
	$file_name2="E:\WAMP\WWWROOT\XXXXXXXXX_callout_log.txt";
	$fp=fopen($file_name,'r');

	if(!feof($fp)){
		$buffer=fgets($fp,32);
		echo "<hr>系统时间:  ".date("Y-m-d H:i:s")."   
				预转移号码:【 XXXXXXXXX → <font color='red'>".$buffer."</font> 】<hr>";

		$file2=file($file_name2);
		$start=count($file2)-1;
		$end=count($file2)-16;

		for ($i=$start;$i>$end;$i--) {
			//$arr[]=fgets($file2);//读出100~200行
			if(!empty($file2[$i])){
				echo $file2[$i]."<br>";
			}
		}
		
	}

	fclose($fp);

echo "</div>";

echo "<hr>".date("Y-m-d H:i:s")." →".$err."<hr>";
?>
</td></tr></table>
</form>



VB端FRM代码,另存为form1.frm即可:

VERSION 5.00
Object = "{48E59290-9880-11CF-9754-00AA00C00908}#1.0#0"; "MSINET.OCX"
Begin VB.Form Form1 
   Caption         =   "XXXXXXXXX来电转接监听"
   ClientHeight    =   7035
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   6705
   LinkTopic       =   "Form1"
   ScaleHeight     =   7035
   ScaleWidth      =   6705
   StartUpPosition =   1  '所有者中心
   Begin VB.CommandButton Command3 
      Caption         =   " 退 出 "
      BeginProperty Font 
         Name            =   "新宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   5400
      TabIndex        =   11
      Top             =   6600
      Width           =   1215
   End
   Begin VB.Timer Timer1 
      Interval        =   1000
      Left            =   4440
      Top             =   6480
   End
   Begin InetCtlsObjects.Inet Inet1 
      Left            =   3720
      Top             =   6360
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
   End
   Begin VB.Frame Frame2 
      Caption         =   "变更记录 "
      Height          =   4575
      Left            =   120
      TabIndex        =   1
      Top             =   1920
      Width           =   6495
      Begin VB.TextBox Text1 
         BorderStyle     =   0  'None
         Height          =   4215
         Left            =   120
         Locked          =   -1  'True
         MultiLine       =   -1  'True
         TabIndex        =   2
         Text            =   "Form1.frx":0000
         Top             =   240
         Width           =   6255
      End
   End
   Begin VB.Frame Frame1 
      Caption         =   "呼叫转移设置(http://192.168.*.*/XXXXXXXXX_callout.php)"
      Height          =   1695
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   6495
      Begin VB.CommandButton Command1 
         Caption         =   "立即更新"
         BeginProperty Font 
            Name            =   "宋体-PUA"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   495
         Left            =   4800
         TabIndex        =   9
         Top             =   960
         Width           =   1455
      End
      Begin VB.CommandButton Command2 
         Caption         =   "手动检测"
         BeginProperty Font 
            Name            =   "宋体-PUA"
            Size            =   12
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   495
         Left            =   2880
         TabIndex        =   10
         Top             =   960
         Width           =   1935
      End
      Begin VB.CheckBox Check1 
         Caption         =   "自动轮换"
         BeginProperty Font 
            Name            =   "宋体"
            Size            =   12
            Charset         =   134
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   255
         Left            =   360
         TabIndex        =   8
         Top             =   960
         Value           =   1  'Checked
         Width           =   1695
      End
      Begin VB.Label Label2 
         BeginProperty Font 
            Name            =   "宋体"
            Size            =   10.5
            Charset         =   134
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00C00000&
         Height          =   255
         Left            =   1440
         TabIndex        =   4
         Top             =   360
         Width           =   4455
      End
      Begin VB.Label Label4 
         BeginProperty Font 
            Name            =   "宋体"
            Size            =   10.5
            Charset         =   134
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00C00000&
         Height          =   255
         Left            =   1440
         TabIndex        =   6
         Top             =   600
         Width           =   4935
      End
      Begin VB.Label Label3 
         Caption         =   "程序设置:"
         BeginProperty Font 
            Name            =   "宋体"
            Size            =   10.5
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H80000011&
         Height          =   255
         Left            =   360
         TabIndex        =   5
         Top             =   600
         Width           =   1455
      End
      Begin VB.Label Label1 
         Caption         =   "预订设置:"
         BeginProperty Font 
            Name            =   "宋体"
            Size            =   10.5
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00808080&
         Height          =   255
         Left            =   360
         TabIndex        =   3
         Top             =   360
         Width           =   1335
      End
   End
   Begin VB.Label Label5 
      Caption         =   "Copyright(c) 2013 ty1921 "
      Height          =   255
      Left            =   120
      TabIndex        =   7
      Top             =   6600
      Width           =   3015
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileStringByKeyName& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lplFileName As String)
Public I As Integer
Public Callout_date

Private Sub Command2_Click()
    Call Ty1921
End Sub

Private Sub Command3_Click()
    End
End Sub

Private Sub Form_Load()

    Call Ty1921
    I = 60

End Sub



Private Sub Command1_Click()
   '立即更新
   I = 3

End Sub





Private Sub Timer1_Timer()
    
    I = I - 1
    
    If I <= 0 Then
        Call Ty1921
            
        If Left(Label2.Caption, 11) <> Left(Label4.Caption, 11) Then
            '检测预配置,不一致则马上更改
            Call ReBoot(Left(Trim(Label2.Caption), 11))
        End If
        
        '自动轮换检查
        If Check1.Value = 1 And Time <= "00:06:00" Then
            
            '日期检查
            Callout_date = Inet1.OpenURL("http://192.168.*.*/XXXXXXXXX_callout_date.txt")
            If Date <> Callout_date Then
            '更换号码
                If Left(Label2.Caption, 11) = "181XXXXXXXX" Then
                    Call ReBoot("181XXXXXXXX")
                ElseIf Left(Label2.Caption, 11) = "189XXXXXXXX" Then
                    Call ReBoot("181XXXXXXXX")
                Else
                    Call ReBoot("XXXXXXXX")'应急号码
                End If
            End If
        End If
        
        '延时
        I = 120
        
        
    Else
        Command2.Caption = "手动检测 (" & I & ")"
    End If
    
    
    
End Sub


Sub Ty1921()

    Dim CallOut As String * 32
    GetPrivateProfileString "DATABASE", "callout", "错误,未得到值", CallOut, 255, "d:\zhai\IvrConfig.ini"
    Label4.Caption = Trim(Str(CallOut)) & " | " & Now
    
    Label2.Caption = Inet1.OpenURL("http://192.168.*.*/XXXXXXXXX_callout.txt") & " | " & Now
    
    Text1.Text = Inet1.OpenURL("http://192.168.*.*/XXXXXXXXX_callout_log.txt")

End Sub

Sub ReBoot(ByVal PhoneNum As String)

    Dim Result_i
    WritePrivateProfileStringByKeyName& "DATABASE", "callout", PhoneNum, "d:\zhai\IvrConfig.ini"
    '同步网络配置
    Result_i = Inet1.OpenURL("http://192.168.*.*/XXXXXXXXX_callout.php?type=vb&date=" & Date & "&phonenum=" & PhoneNum)
    If Result_i = "ok" Then
        Call Ty1921
    End If

            
    '关闭程序
    Shell ("cmd /c taskkill /f /im demo.exe"), vbHide
    '开启程序
    Shell ("D:\zhai\demo.exe"), vbNormalFocus

End Sub



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VB+PHP实现在线修改Windows服务器的配置文件 的相关文章

  • git 如何把单个文件回退到某一版本

    git 如何把单个文件回退到某一版本 概要四条命令git restoregit resetgit checkoutgit cherry pick 概要 应用场景 xff1a 在进行一次完整的提交后 xff0c 你可能有有这样的需求 xff1
  • Docker

    学习笔记 一 Docker概述 1 基本介绍 Docker是一个开源的应用容器引擎 xff0c 基于Go语言 xff0c 并遵从apache2 0协议开源 docker可以让开发者打包他们的应用以及依赖包到一个轻量级 可移植的容器中 xff
  • roslaunch 时出现resource 找不到的问题

    Resource not found roslaunch ROS path 0 61 opt ros noetic share ros ROS path 1 61 opt ros noetic share The traceback for
  • Linux多线程编程

    在传统的 UNIX 模型中 xff0c 当一个进程需要另一个实体来完成某事 xff0c 它就 fork 一个子进程并让子进程去处理 但是 fork 的调用有如下缺点 xff1a xff08 1 xff09 fork 的 代价是 昂贵的 fo
  • 控制工程实践(13)——滤波器的实现(之二)

    2 中值滤波算法 中值滤波算法 xff0c 通俗讲 xff0c 就是取一组数据的中间大小的值 运算过程 xff1a 对某一参数连续采样N次 xff0c 为方便选取 xff0c N设为奇数 xff1b 把N个采样值从小到大排序 xff1b 取
  • 控制工程实践(14)——滤波器的实现(之三)

    4 加权平均滤波算法 算术平均滤波算法 有平滑度和灵敏度的取舍矛盾 xff1a 取样信号个数小时 xff0c 灵敏度高 xff0c 但平滑度低 xff1b 取样信号个数大时 xff0c 平滑度高 xff0c 但灵敏度低 为了协调二者矛盾 x
  • 信号与系统 基础知识点整理 03(文末可下载PDF格式)

    接着前面的继续 xff1a 信号与系统 passage three Written 8 March 2022 Edited by Wang Ximing 一 xff08 信号的分解 xff09 xff08 1 xff09 直流分量与交流分量
  • mac系统如何生成SSH key与GitHub通信

    一 检查 SSH key 是否存在 在终端输入 xff1a ls al ssh 如果没有 xff0c 终端显示如下 xff1a No such file or directory 如果已经存在 xff0c 则会显示 id rsa 和 id
  • ROS-Industrial 硬件支持

    ROS Industrial硬件支持 ROS Industrial程序的目标是为许多不同种类的工业设备提供ROS接口 xff0c 包括PLC xff0c 机器人控制器 xff0c Servos xff0c 人机界面 工业机器人 下表总结了各
  • ROS依赖包查找安装

    当下载某个功能包到自己的空间 xff0c 在编译时 xff0c 出现依赖项有问题 xff0c 解决如下 xff1a roscd package name rosdep update rosdep package name rosdep即可安
  • 在Windows上使用ROS软件包

    1 二进制安装 如果有ROS软件包的二进制发行版 xff0c 可以使用Chocolatey安装 choco install ros melodic lt package name gt ROS软件包查询 https index ros or
  • EKF扩展卡尔曼滤波器 - CTRV运动模型 及其代码实现

    本文参考了Adam大佬的帖子 https blog csdn net AdamShan article details 78265754 原贴的公式有一点点错误 xff0c 这里已经修正了 xff0c 并给出了代码实现 CTRV模型 我们通
  • 安卓SDK和API是什么意思?

    安卓SDK和API是什么意思 xff1f 一 SDK SDK就是kit xff0c 通俗讲就是工具箱 一系列的工具组合在一起 xff0c 能实现补全代码 自动错误检查之类的功能 xff0c 比如点一下run xff0c 会调用编译器来自动编
  • 3D视觉(五):对极几何和三角测量

    3D视觉 五 xff1a 对极几何和三角测量 对极几何 xff08 Epipolar Geometry xff09 描述的是两幅视图之间的内在射影关系 xff0c 与外部场景无关 xff0c 只依赖于摄像机内参数和这两幅试图之间的的相对姿态
  • 关于产品的一些思考——写在前面的话

    自己是一个十足的Geek xff0c 喜欢使用各种新奇的东西 xff0c 包括软件 硬件 技术 xff0c 又因为自己一点点轻微的强迫症和完美主义 xff0c 在这个过程中总会有自己的一些思考 xff0c 又因为技术出身 xff0c 总会考
  • mybatis映射文件mapper.xml的写法。

    在学习mybatis的时候我们通常会在映射文件这样写 xff1a lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt DOCTYPE mapper PUBLIC 34 myba
  • layer的弹出层的简单的例子

    如果不了级的基本的清楚官网查看api网址为 http layer layui com 我用的是iframe 如果是iframe层 layer open type 2 content 39 http sentsin com 39 这里cont
  • 左链接Column 'id' in field list is ambiguous

    如题错误如左链接Column 39 id 39 in field list is ambiguous 今天在写sm的时候 xff0c 用到两个表的联合查询出现的如下的错误 xff0c 仔细查找才发现原来两个表的id重复了 xff0c use
  • 我所理解的人工智能

    很多人容易把人工智能理解为机器人 机器人是人工智能的一个实际体现 人工智能应用很广泛 下面我来谈谈我的理解 人工智能可分开理解为 人工 和 智能 xff0c 即人类创造出来的智能 xff0c 从广义上来讲只要人类创造出来 xff0c 能为人
  • maven出现:Failed to execute goal on project ...: Could not resolve dependencies for project ...

    1 我的项目结构是一个父项目 xff0c 多个子项目目录如下 xff1a 2 我这里就举个例子 xff0c 所以应用的也就是core和domain这两个项目 3 两个项目都继承父项目 4 在模块中domain依赖于core xff0c 在c

随机推荐

  • 有关Shiro中Principal的使用

    1 定义 principal代表什么那 xff1f 如果阅读官方文档或者源码你会得到如下的定义 xff1a 解释 xff1a 1 xff09 可以是uuid 2 xff09 数据库中的主键 3 xff09 LDAP UUID或静态DN 4
  • 关于shiro的 subject.getPrincipal()方法

    1 说明 上一篇文章说明了 principal xff0c 而subject getPrincipal 是用来干嘛的 xff0c 他就是来获取你存储的principal xff0c 内部是怎么获取的那 xff0c 多个principal怎么
  • CentOS7 64位安装solr7.2.0

    声明 xff1a 本人为学习solr的新手 xff0c 如编写过程中有部队的地方还请各位大佬指正 本文为原创 xff0c 如要转载请注明出处 你能学到 xff1a 1 linux上solr的安装部署 xff0c 官方给出的运行方式 2 添加
  • 阿里巴巴20121009 研发/算法工程师 笔试试题【修正】

    第19题 a i 在排序后的位置是 i k i 43 k xff0c a i 43 2k 在排序后的位置是 i 43 k i 43 3k xff0c 必然有a i lt 61 a i 43 2k 所以数组a里实际上有2k个各自有序的 交错的
  • printf() % lf出错

    printf 函数中不存在 lf xff0c 输入 double 用 lf 输出用 f
  • 奔腾系列的CPU 和酷睿系列的CPU

    以后奔腾要沦为中下层产品 奔腾D是接替奔腾4的型号 也是INTEL的第一代双核处理器 技术还比较粗糙 发热量控制的也不够好 至于酷睿系列 这可是INTEL的最新力作 性能上有绝对的优势 技术上也对老对手AMD保持了领先 而且功耗控制的也非常
  • 为什么神经网络被称为黑匣子

    数学层面 xff1a 由于网络参数与近似的数学函数之间缺乏明确的连接 xff0c 人工神经网络通常被称为 黑匣子
  • 第八弹 ROS发布者Publisher的编程实现

    1 话题模型 xff08 发布与订阅 xff09 2 创建功能包 catkin create pkg learning topic roscpp rospy std msgs geometry msgs turtlesim 建立一个名为le
  • TRIZ创新思维方法_简要复习

    一 TRIZ介绍 TRIZ理论成功地揭示了创造发明的内在规律和原理 xff0c 着力于澄清和强调系统中存在的矛盾 xff0c 其目标是完全解决矛盾 xff0c 获得最终的理想解 它不是采取折中或者妥协的做法 xff0c 而且它是基于技术的发
  • Generalized Focal Loss: Learning Qualified and Distributed BBoxes for Dense Object Detection论文翻译阅读

    Generalized Focal Loss Learning Qualified and Distributed Bounding Boxes for Dense Object Detection论文翻译阅读 论文下载地址 xff1a 点
  • ubuntu16.04对SD卡进行分区

    赶在2020年上半年的最后一天 xff0c 匆忙地写上一个博客 这篇博客是对自己的一个反思 xff0c 我的博客属于自己完全开辟的内容几很少 xff0c 有些博客大家随便在网上一搜就能找到 说实话 xff0c 有时候我会怀疑自己的智商有问题
  • RT-thread移植指南-RISC-V

    目录 RT thread移植指南 RISC V 1 概述 1 1 移植资料参考 1 2 移植开发环境准备 2 移植步骤 2 1 全局中断开关函数 2 2 线程上下文切换函数 2 3 线程栈的初始化 2 4 时钟节拍的配置 2 5 中断函数
  • 寒假学习心得--从0开始学破解

    寒假学习心得 从0开始学破解 写给和我一样将要接触或者才接触破解 的朋友们 前提 你必须得真正喜欢 她 一 工欲善其事 必先利其器 1 找一个中文版的OD PEID 记得就OD就有咱PYG版的某牛人强化版的等等等等 找一个合适的工具 干起事
  • 常用的“密码重置”代码

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • ORACLE多表查询优化

    转自某地 对作者很愧疚 不晓得地址了 ORACLE 多表查询优化 这里提供的是执行性能的优化 而不是后台数据库优化器资料 参考数据库开发性能方面的各种问题 收集了一些优化方案统计如下 当然 象索引等优化方案太过简单就不列入了 嘿嘿 执行路径
  • Word to PDF Converter v3.0 算法分析及注册机

    Word to PDF Converter v3 0算法分析及注册机 详细过程 1 xff0c 主程序在C Program Files doc2pdf DOC2PDF dll xff0c PEID查壳为ASProtect 1 23 RC1
  • 安全策略调整步骤

    1 修改防火墙 xff0c 保留22 SSHD 8081 APACHE 80 关闭端口443 HTTPS 3306 MYSQL 8080 8088 53 123 2 针对PHP的BUG和安全漏洞 xff0c 只有升级版本一途 xff0c 经
  • 获取微信openid(或昵称头像)的授权登录及其代理

    lt php 本页用于微信授权登录及其代理 64 version V2 0 64 author ty1921 lt ty1921 64 gmail com gt 64 param backurl 传get参数backurl xff0c 则授
  • 常用的PHP文件头和HTML5文件头(含移动端)

    lt php PHP Header Created by ty1921 64 gmail com Ver V1 Date 2017 8 18 1 session session start 2 display errors ini set
  • VB+PHP实现在线修改Windows服务器的配置文件

    本文仅供记录 存档备案用 用途 xff1a 某电话转接系统 xff0c 需要每天修改配置文件 并重启服务端程序 原理 xff1a WEB用于展示修改界面 xff0c 提交 保存配置文件的相关数据 VB端用于定时轮训WEB上保存的数据 xff