本系统分析了Linux操作系统的特点、远程管理的各种方法和Webmin,并给出了一个远程管理Linux服务器的具体实现方法。利用PHP语言来构建了一个远程管理系统 —— PHP Webmin,以Web的形式来实现Linux服务器的远程管理,简化了管理难度,并使管理方式更为灵活,从而达到了减轻系统管理员压力,方便系统管理员管理服务器的目的。
在此系统中实现了文件操作管理、远程运行shell命令、对系统进程的监控、对系统的关机/重启、对系统用户/组的操作、rpm包组的管理、对网络参数的查看与配置、对常见服务器的基本管理等功能。系统管理员可使用系统中的各功能模对整个Linux服务器进行日常管理。此系统能够应用于对小型Linux服务器的远程管理。
背景
LAMP (Linux + Apache + MySQL + PHP/Perl) 近几年来发展迅速,已经成为Web 服务器的事实标准。这个术语代表了 Linux 平台上的 Apache 网站服务器; MySQL 数据库以及PHP 、Perl编程语言的结合。LAMP 不仅会成为企业接入互联网,也应该会在企业内部网络建设中大有作为。提到开放源代码,你马上就会意识到 Linux操作系统。Linux 是开放源码软件的代表,目前有越来越多的网站把他们的 Web 服务器架构在 Linux操作系统之上,因为 Linux 能够提供健壮的 Web 应用。LAMP 所代表的不仅仅是开放源码,它更是开发和实施高性能Web应用的重要平台。
当前现状
随着互联网的高速发展以及Linux企业应用的成熟,Linux被广泛应用于服务器领域,如何实现Linux的远程管理成为网络管理员的首要任务。接触过远程操作的朋友,肯定会立即说出若干个相关windows操作系统软件(PCanywhere、Netop Remote Control),可是Linux下软件都有哪些呢?我们应该如何选择适合自己的远程操作软件呢?这对于一些甚少接触远程操作的朋友而言无疑是个关注的话题。
Linux操作系统源于Unix,以其精小灵活稳定的特性,加上其源代码完全公开,几乎秉承了Unix系统的所有优点,赢得了很多用户的青睐,但是Linux的管理操作界面是单一的命令行方式。
选题意义
不知Linux服务器的系统管理员有没有过人不在主机前,却又必须掌握主机信息的经验?比如服务器在成都,偏偏管理员却出差到北京去了,这时该怎么办呢?想说找人来帮你到服务器面前看一下,又担心管理员密码给了别人会出状况;想要通过Telnet或者ssh这类远程登录的方式来达到远程控制的目的,可偏偏手边又没有client程序可用,或者当初为了安全性考虑,完全没有在服务器上安装可供远程控制的server,这时候真是心有余力不足啊。
而且,对于刚刚接触Linux的系统管理员来说,正确高效地完成各种关键的系统配置简直是一件不可能的任务。即使是一个很有经验的Linux的管理员,也常常会为某些复杂的配置文件的格式而苦恼。本软件的开发主要是为了方便网络系统管理员对本地和远程安装了Linux系统的服务器进行管理,增加管理的方便性,利用B/S结构也从另外一方面减少了管理员的劳动量。管理员利用浏览器在远程登录后,可以方便的对服务器进行运行状态的查看,对网络服务进行配置,对一些数据进行分析,而且可以对异常现象作出快速的反应。
设计 模式
本系统的开发要求采用B/S结构,如图1所示。本系统模拟Webmin进行设计与开发。因此,首先了解Webmin的相关功能,结合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识选择所熟悉的开发工具进行本毕业设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;最后,系统开发完毕后,进行调试和测试,做好调试和测试的相关记录。
整个管理系统中,用文件操作模块作为突破口,首先设计整体页面,再写出文件操作部分以深入了解该系统的工作方式及系统的大致面貌,然后设计Shell命令解释与执行部分操作和进程操作部分,继而逐步增加其他的功能与模块,最后对整个系统进行修饰整理,从而完成了该系统。
本系统的开发主要是为了方便网络系统管理员对本地和远程安装了Linux系统的服务器进行管理,增加管理的方便性,利用B/S结构,减少了管理员的劳动量。管理员利用浏览器在远程登录后,可以方便的对服务器进行运行状态的查看,对网络服务进行配置,对一些数据进行分析,并对异常现象做出快速的反应。
本系统的目标是完成一个基于WEB的Linux上的GUI管理工具,给Linux系统管理员提供帮助,协助Linux系统管理员正确高效的完成各种关键的系统配置,如远程的文件操作、Shell命令执行、进程操作、系统操作、各种网络服务配置等等。管理员通过浏览器访问次管理系统的各种管理功能并完成相应的管理动作;要求此管理系统同时具有本地和远程管理的能力,要求注意一定的安全设置,保证足够的安全性,在完成系统基本功能的前提下,注意一定的扩展和伸缩性,要求亲近的管理界面和易用的操作。
主要任务:
运用所学知识,开发基于Linux的远程管理系统,以方便网络系统管理员在客户端对本地或远程主机进行管理。本系统要求实现的部分功能有:文件操作、命令操作、进程操作、系统操作、网络操作。
相关要求:
1) 本系统的开发要求采用B/S结构,选用所熟悉的开发工具及开发环境进行本系统的设计与开发。
2) 本设计要求实现远程管理的功能,界面要简洁实用,功能要完善。
在系统的性能方面,B/S模式具有异地浏览和信息采集的灵活性,任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端,B/S模式还具有管理维护集中方便、用户使用简单、跨平台等优点。
因此本系统采用B/S模式(如图2),方便系统管理员在Linux/Win等各种系统中通过浏览器对Linux主机进行远程管理。
如图3所示,此系统工作流程分为三个部分:认证流程、管理流程、注销流程。
认证流程
管理员端通过浏览器登录此远程网络服务管理系统,输入此系统用户名与密码,用户名或密码错误则需重新输入;正确则进入此管理系统,获得一定权限,管理系统服务。
管理流程
当用户正确进入系统后,即可进行系统管理,点击某管理模块,设置某项服务,系统通过网络发送命令到Web服务器,与服务器获得交互,服务器通过PHP引擎解析获得命令,调用相应脚本并执行,获得结果返回到远程主机。
注销流程
管理员完成远程主机更新或管理后,可点击注销以退出本远程管理系统,系统发送注销命令到服务器,服务器使所登录用户失去管理权限,切断用户与服务器的连接,返回到管理系统登录页面。
总体设计
模块划分与功能设计
通过对系统的需求分析,把此Linux远程管理系统分为五个模块(如图4):
文件操作模块;
命令操作模块;
进程操作模块;
系统操作模块;
网络服务操作模块。
五个模块的功能配合,再加上在对Apache服务器的特殊配置,整体实现了对Linux服务器的远程管理与基本信息监控。
在整个系统设计中,本人完成里命令操作模块与系统操作模块,其余模块由合作者孙泽玺设计完成。
功能模块的初步设计
1、文件操作
在文件操作模块中可以进行查看文件或目录,新建文件或目录,删除文件或目录,复制文件或目录,编辑文件,上传文件,下载文件等等操作,在此文件操作模块中需对服务器文件或目录属性有一定设置;
2、命令操作
对各种SHELL命令的解释与执行,可执行常用Linux命令,可在此模块中进行进程操作和系统操作等等,注意使用的是Web模式,无法执行交互式Shell命令;
如图5所示,在设计中,使用一个表单获得commond变量,提交给system函数后执行system(“sudo $commond”),并返回结果。
3、进程操作
查看或终止正在运行的进程,查看开启的服务列表(端口号)、对开启服务进行管理、查看当前系统所有正在运行的进程并且可以对进程进行相关操作;
4、系统操作
系统操作中包括:关机或重启、查看系统信息、管理用户和组、管理软件包(如图6);
如图7,系统操作模块的总体设计跟命令操作中类似,使用表单获取所需运行命令或参数,再提交给system函数执行并返回结果:
关机和重启,可通过管理员点击Shutdown、Reboot按钮,从而调用system函数执行内置的关机、重启命令,也可在表单中输入其他关机或重启命令并运行;
查看系统信息,通过switch判断提交的命令,并调用system函数执行内置命令如uname –a、fdisk –l等,包括查看CPU信息、查看分区信息、查看内核;
管理用户和组,可以查看系统拥有用户和组,并通过简单的表单提交,进行添加、删除用户或组的操作,详见图8;
管理软件包,可以查看系统所有已安装软件包,并输入关键字搜索查看特定软件包,以及根据搜索出的软件包名进行软件包删除操作;
5、网络服务操作
管理Apache服务器,查看并配置Apache服务器状态与参数;
管理DNS服务器,查看并配置DNS服务器参数;
管理MySQL服务器,通过Web进行Mysql服务器的备份等;
管理DHCP服务器,查看网络状态,配置网络参数。
详细设计
服务器 设计
此管理系统的目的是对Linux进行远程管理,则在管理过程中需要对Linux系统配置文件进行读取,或者运行系统命令,访问系统敏感数据等。而在Linux系统中,默认的Apache用户权限是无法访问管理系统所需文件,无法运行关键系统命令的,因此,需要对Apache服务器进行一些特殊配置,提升其权限,并且需要考虑安全问题,对用户的认证问题等等。在本系统中,使用SSL连接,运用Apache基本验证来认证用户;通过对Apache服务器进行特殊配置,使其获得root权限,完成远程管理Linux服务器的目的。
更改Apache配置
为了保证系统的安全性,在此对Apache Web服务器的目录执行访问控制 ,使用.htaccess访问文件和htpasswd程序为一个目录建立ACL,来对用户进行身份验证,并在.htaccess文件中设置使用SSL连接,完善安全性。
假设PHPWebmin位于/var/www/phpwebmin目录中。
用vi编辑器打开Apache配置文件httpd.Conf(默认在/etc/httpd/conf/目录下),找到字段,在下面的属性设置中添加或修改
AllowOverride ALL //此参数设置哪些目录使用.htaccess进行保护;
进入phpwebmin目录,cd /var/www/phpwebmin,在此目录下建立隐藏文件.htaccess(必须在htaccess文件前添加一个点号,如果不这样做,就无法建立ACL,因为点号表示建立一个隐藏文件) vi .htaccess,在.htaccess文件中输入如下代码:
SSLRequireSSL //使用SSL安全连接
AuthName "PHP Webmin" //验证名称
AuthType Basic
require valid-user //允许password文件中的所有用户访问
AuthUserFile /var/www/phpwebmin/.phpwebminpasswd //用户身份数据库文件;
在命令行下输入以下口令创建用户身份验证数据库文件,会要求你为用户admin创建密码:
htpasswd -c /var/www/phpwebmin/.phpwebminpasswd admin
New password:
Re-type new password:
建立后的.phpwebminpasswd文件内容类似于:
admin:Op96DPmXTKy5w //用户名:MD5加密后的密码
若系统没有安装htpasswd,也可在网上生成用户名密码后放入.phpwebminpasswd文件。
这样,就已经为Apache服务器建立了一个用户账号数据库,并对phpwebmin目录实行了目录保护,并实现了用户基本验证,需要用安全连接https://localhost/phpwebmin/ 进行访问,访问过程中会弹出验证对话框。
服务器特殊配置
Apache的配置是为了实现目录保护和基本验证,但为了提高用户的权限,还需要对服务器进行一些配置。
查看httpd.conf文件找到User字段,查看Apache启动用户(默认为apache);
编辑/etc/passwd文件,找到apache用户行,修改其shell(默认为/bin/nologin或/bin/false)为/bin/bash;
编辑/etc/sudoers文件,在文件中root ALL=(ALL)ALL字段的下一行添加apache ALL=NOPASSWORD:ALL,使得apache用户能够通过sudo命令执行所有命令。
经过此配置后,apache用户只要使用sudo命令即可获得root权限。
命令操作模块设计
功能描述
对命令的解释与执行,执行常用Linux命令,通过前面的服务器配置后,使用户在浏览器中用户系统root权限,执行系统命令,注意使用的是Web模式,无法执行交互式Shell命令。
界面设计
页面中仅有一个输入框,一个提交按钮,和一个结果显示区域,如图9:
文本输入框获得commond变量,提交给system函数后运行并把结果显示在textarea中:
result:
/* 具体代码 */
工作流程
用户在文本框中输入并提交命令,点击go运行,在文本区域中返回并显示运行结果。具体流程见 图4命令操作设计流程。
实现代码如下:
$exec=NULL;
import_request_variables("gp","cmd_");
if($cmd_command) {$exec=$cmd_command;}
?>
if($exec) { system("sudo $exec");}
?>
系统操作模块设计
系统操作模块中又包括关机和重启、查看系统信息、管理用户和组、管理软件包四个子模块。不同的子模块采用相似的方式实现其功能。
功能描述
系统关机、系统重启;
查看系统cpu信息、查看硬盘信息、查看内核;
查看系统用户和组,添加/删除用户,添加/删除组;
查看系统安装软件包、根据关键字搜索软件包、根据软件包全名删除软件。
界面设计
基本设计为,页面上方为提交按钮,下方为一个文本区域,点击按钮时调用system函数运行内置命令,并在文本区域中返回结果。下面以用户/组管理模块来说明界面设计模式,如图10所示。
查看用户/组页界面代码:
/* 具体代码 */
在管理用户和组子模块中,首先在edit_user.html页中填写user属性,包括用户名,用户工作目录,用户shell,用户uid,用户密码等参数,提交至save_user.php页并运行useradd操作,同时返回运行结果。
如图11所示,编辑用户页面中,三个输入框分别为用户名获取变量$user,用户ID获取变量$uid,用户目录获取变量$home,一个选择框选择用户默认shell获取$shell,另一选择是否需要密码,需要则输入密码获取$encpass,使用一个提交按钮Creat来提交所输入的用户信息至save_user.php页,代码如下:
Username
User ID
Home directory
Shell
/bin/sh
/bin/csh
/bin/bash
/bin/false
/sbin/nologin
Other..
Password
No password required
Encrypted password
….
工作流程
用户点击关机与重启子模块,点击Shutdown或Reboot按钮产生关机或重启操作,也可执行自定义关机/重启命令,具体流程如图12;
实现代码如下:
switch($_POST['init'])
{
case Shutdown:
echo "Shutdown immediately......\n";
$exec="sudo init 0";
break;
case Reboot:
echo "Reboot immediately......\n";
$exec="sudo init 6";
}
if($_POST['command'])
{
echo "Waiting......\n";
$exec="sudo ".$_POST['command'];
}
if($exec)
{
system($exec);
echo "\nDone...";
}
打开查看系统信息子模块,查看CPU Info、Disk Info、Kernel Version,流程如图13;
实现代码如下:
switch($_POST['info'])
{
case "CPU Info":
$exec="sudo cat /proc/cpuinfo";
break;
case "Disk Info":
$exec="sudo fdisk -l";
break;
case "Kernel Version":
$exec="sudo uname -a";
}
if($exec) { system($exec);}
?>
打开管理用户和组子模块,在初始页面中可查看系统用户和组,点击查看用户/组按钮时,调用system函数运行cat命令,在文本区域中显示/etc/passwd或/etc/group文件的内容;
点击添加用户连接进入用户的信息页面user_edit.html,填写用户基本信息,提交至添加页user_save.php,运行sudo useradd命令,完成添加操作;
点击删除用户连接,进入删除页面del_user.php,填写用户名,运行sudo userdel命令,完成删除操作,工作流程见 图8 用户/组管理总体设计图,下面为添加/删除用户代码。
添加用户代码:
switch($_POST['passmode'])
{
case 0:
$passwd="";
break;
case 1:
$passwd=" -p ".$_POST['encpass'];
}
if(!$_POST['home'])
{
$home=" -d ".$_POST['home'];
}
$user=$_POST['user'];
$uid=" -u ".$_POST['uid'];
$shell=" -s ".$_POST['shell'];
$commond="sudo useradd ".$_POST['user']." -d ".$_POST['home']." -s ".$_POST['shell']." -u ".$_POST['uid']." -p ".$_POST['encpass'];
echo $commond;
if($commond) { system($commond); }
删除用户代码:
$commond="sudo userdel ".$_POST['user'];
echo $commond;
if($commond) { system($commond); }
打开管理软件包子模块,查看系统已安装软件包,填写关键字搜索,根据软件包全名进行删除操作,软件包管理流程如图14。
查看已安装软件包代码:
switch($_POST['package'])
{
case "Show all package":
echo "Waiting......\n";
$exec="sudo rpm -qa";
}
根据关键字搜索代码:
if($_POST['search'])
{
echo "Waiting......\n";
$exec="sudo rpm -qa | grep ".$_POST['search'];
}
if($exec) { system($exec);}
根据关键字删除代码:
if($_POST['uninstall'])
{
echo "Waiting......\n";
$exec="sudo -e ".$_POST['uninstall'];
}
if($exec)
{
if(system($exec))
echo "\nDone......\n";
else echo "Error...Check your package name or operation...";
}
系统安装使用与测试
服务器设置
按照 5.1服务器设计中给出步骤,分别对Apache Web服务器,及Linux服务器进行配置,注意若不对/etc/sudoers进行配置,则本系统大部分功能无法使用。
也可省略对.htaccess和.phpwebminpasswd的生成,使用源代码中所带的ACL文件和用户密码数据文件,请注意修改.htaccess文件中AuthUserFile后的字段指向相应数据文件,默认用户名为admin,密码为admin。
使用系统
把PHP Webmin源代码放至/var/www/phpwebmin目录,在浏览器中通过https://localhost/phpwebmin/进行访问和测试,也可通过远程访问进行测试。
测试
基本测试
通过https登录并输入用户名和密码,通过认证则进入主页面,如图15;
若使用http登录则显示Forbidden,如图16;
在未通过验证的情况下无法访问访问任何phpwebmin下级目录;
功能测试
使用PHP Webmin对系统进行简单管理:
运行Shell命令,输入whoami显示结果为root,如图9所示;
查看用户,点击Show all user,在文本区域中显示所有系统用户,及其主目录、uid、shell,如图10所示例;
查看CPU信息,点击CPU Info,在文本区域中显示CPU信息,如图17;
关机/重启,点击Shutdown,系统将立即关闭,点击Reboot,系统将立即重启。
已知问题:
使用Apache基本验证会在浏览器中保存session,需要在完成系统管理操作后关闭浏览器或手动删除浏览器session;
apache用户经过配置后可执行sudo命令,产生了系统安全隐患。
Linux远程管理系统主体功能已全面实现。系统界面简洁,操作方便,功能齐全,实现了文件操作、远程运行Shell命令、进程监控、用户/组管理、系统信息查看、Rpm软件包管理、查看/配置网络参数、管理常见服务器软件的功能,基本实现了对Linux系统的远程管理。但是也有需要进一步改进的地方,如:在进程监控时,需要查看进程信息后结合命令行操作来实现对进程的关闭;还有本系统没有完全实现服务器配置功能,没有完全解决对系统配置文件的读写问题等。
你可能感兴趣的:(linux,服务器,运维)
android系统selinux中添加新属性property
辉色投像
1.定位/android/system/sepolicy/private/property_contexts声明属性开头:persist.charge声明属性类型:u:object_r:system_prop:s0图12.定位到android/system/sepolicy/public/domain.te删除neverallow{domain-init}default_prop:property
理解Gunicorn:Python WSGI服务器的基石
范范0825
ipython linux 运维
理解Gunicorn:PythonWSGI服务器的基石介绍Gunicorn,全称GreenUnicorn,是一个为PythonWSGI(WebServerGatewayInterface)应用设计的高效、轻量级HTTP服务器。作为PythonWeb应用部署的常用工具,Gunicorn以其高性能和易用性著称。本文将介绍Gunicorn的基本概念、安装和配置,帮助初学者快速上手。1.什么是Gunico
swagger访问路径
igotyback
swagger
Swagger2.x版本访问地址:http://{ip}:{port}/{context-path}/swagger-ui.html{ip}是你的服务器IP地址。{port}是你的应用服务端口,通常为8080。{context-path}是你的应用上下文路径,如果应用部署在根路径下,则为空。Swagger3.x版本对于Swagger3.x版本(也称为OpenAPI3)访问地址:http://{ip
Linux下QT开发的动态库界面弹出操作(SDL2)
13jjyao
QT类 qt 开发语言 sdl2 linux
需求:操作系统为linux,开发框架为qt,做成需带界面的qt动态库,调用方为java等非qt程序难点:调用方为java等非qt程序,也就是说调用方肯定不带QApplication::exec(),缺少了这个,QTimer等事件和QT创建的窗口将不能弹出(包括opencv也是不能弹出);这与qt调用本身qt库是有本质的区别的思路:1.调用方缺QApplication::exec(),那么我们在接口
高级编程--XML+socket练习题
masa010
java 开发语言
1.北京华北2114.8万人上海华东2,500万人广州华南1292.68万人成都华西1417万人(1)使用dom4j将信息存入xml中(2)读取信息,并打印控制台(3)添加一个city节点与子节点(4)使用socketTCP协议编写服务端与客户端,客户端输入城市ID,服务器响应相应城市信息(5)使用socketTCP协议编写服务端与客户端,客户端要求用户输入city对象,服务端接收并使用dom4j
linux sdl windows.h,Windows下的SDL安装
奔跑吧linux内核
linux sdl windows.h
首先你要下载并安装SDL开发包。如果装在C盘下,路径为C:\SDL1.2.5如果在WINDOWS下。你可以按以下步骤:1.打开VC++,点击"Tools",Options2,点击directories选项3.选择"Includefiles"增加一个新的路径。"C:\SDL1.2.5\include"4,现在选择"Libaryfiles“增加"C:\SDL1.2.5\lib"现在你可以开始编写你的第
linux中sdl的使用教程,sdl使用入门
Melissa Corvinus
linux中sdl的使用教程
本文通过一个简单示例讲解SDL的基本使用流程。示例中展示一个窗口,窗口里面有个随机颜色快随机移动。当我们鼠标点击关闭按钮时间窗口关闭。基本步骤如下:1.初始化SDL并创建一个窗口。SDL_Init()初始化SDL_CreateWindow()创建窗口2.纹理渲染存储RGB和存储纹理的区别:比如一个从左到右由红色渐变到蓝色的矩形,用存储RGB的话就需要把矩形中每个点的具体颜色值存储下来;而纹理只是一
PHP环境搭建详细教程
好看资源平台
前端 php
PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这
使用 FinalShell 进行远程连接(ssh 远程连接 Linux 服务器)
编程经验分享
开发工具 服务器 ssh linux
目录前言基本使用教程新建远程连接连接主机自定义命令路由追踪前言后端开发,必然需要和服务器打交道,部署应用,排查问题,查看运行日志等等。一般服务器都是集中部署在机房中,也有一些直接是云服务器,总而言之,程序员不可能直接和服务器直接操作,一般都是通过ssh连接来登录服务器。刚接触远程连接时,使用的是XSHELL来远程连接服务器,连接上就能够操作远程服务器了,但是仅用XSHELL并没有上传下载文件的功能
git - Webhook让部署自动化
大猪大猪
我们现在有一个需求,将项目打包上传到gitlab或者github后,程序能自动部署,不用手动地去服务器中进行项目更新并运行,如何做到?这里我们可以使用gitlab与github的挂钩,挂钩的原理就是,每当我们有请求到gitlab与github服务器时,这时他俩会根据我们配置的挂钩地扯进行访问,webhook挂钩程序会一直监听着某个端口请求,一但收到他们发过来的请求,这时就知道用户有请求提交了,这时
libyuv之linux编译
jaronho
Linux linux 运维 服务器
文章目录一、下载源码二、编译源码三、注意事项1、银河麒麟系统(aarch64)(1)解决armv8-a+dotprod+i8mm指令集支持问题(2)解决armv9-a+sve2指令集支持问题一、下载源码到GitHub网站下载https://github.com/lemenkov/libyuv源码,或者用直接用git克隆到本地,如:gitclonehttps://github.com/lemenko
ARM驱动学习之5 LEDS驱动
JT灬新一
嵌入式 C 底层 arm开发 学习 单片机
ARM驱动学习之5LEDS驱动知识点:•linuxGPIO申请函数和赋值函数–gpio_request–gpio_set_value•三星平台配置GPIO函数–s3c_gpio_cfgpin•GPIO配置输出模式的宏变量–S3C_GPIO_OUTPUT注意点:DRIVER_NAME和DEVICE_NAME匹配。实现步骤:1.加入需要的头文件://Linux平台的gpio头文件#include//三
【华为OD技术面试真题精选 - 非技术题】 -HR面,综合面_华为od hr面
一个射手座的程序媛
程序员 华为od 面试 职场和发展
最后的话最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!资料预览给大家整理的视频资料:给大家整理的电子书资料:如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以点击这里获
简介Shell、zsh、bash
zhaosuningsn
Shell zsh bash shell linux bash
Shell是Linux和Unix的外壳,类似衣服,负责外界与Linux和Unix内核的交互联系。例如接收终端用户及各种应用程序的命令,把接收的命令翻译成内核能理解的语言,传递给内核,并把内核处理接收的命令的结果返回给外界,即Shell是外界和内核沟通的桥梁或大门。Linux和Unix提供了多种Shell,其中有种bash,当然还有其他好多种。Mac电脑中不但有bash,还有一个zsh,预装的,据说
Linux MariaDB使用OpenSSL安装SSL证书
Meta39
MySQL Oracle MariaDB Linux Windows ssl linux mariadb
进入到证书存放目录,批量删除.pem证书警告:确保已经进入到证书存放目录find.-typef-iname\*.pem-delete查看是否安装OpenSSLopensslversion没有则安装yuminstallopensslopenssl-devel开启SSL编辑/etc/my.cnf文件(没有的话就创建,但是要注意,在/etc/my.cnf.d/server.cnf配置了datadir的,
【从浅识到熟知Linux】Linux发展史
Jammingpro
从浅学到熟知Linux linux 运维 服务器
归属专栏:从浅学到熟知Linux个人主页:Jammingpro每日努力一点点,技术变化看得见文章前言:本篇文章记录Linux发展的历史,因在介绍Linux过程中涉及的其他操作系统及人物,本文对相关内容也有所介绍。文章目录Unix发展史Linux发展史开源Linux官网企业应用情况发行版本在学习Linux前,我们可能都会问Linux从哪里来?它是如何发展的。但在介绍Linux之前,需要先介绍一下Un
linux 发展史
种树的猴子
内核 java 操作系统 linux 大数据
linux发展史说明此前对linux认识模糊一知半解,近期通过学习将自己对于linux的发展总结一下方便大家日后的学习。那Linux是目前一款非常火热的开源操作系统,可是linux是什么时候出现的,又是因为什么样的原因被开发出来的呢。以下将对linux的发展历程进行详细的讲解。目录一、Linux发展背景二、UINIX的诞生三、UNIX的重要分支-BSD的诞生四、Minix的诞生五、GNU与Free
Linux sh命令
fengyehongWorld
Linux linux
目录一.基本语法二.选项2.1-c字符串中读取内容,并执行2.1.1基本用法2.1.2获取当前目录下失效的超链接2.2-x每个命令执行之前,将其打印出来2.3结合Here文档使用一.基本语法⏹Linux和Unix系统中用于执行shell脚本或运行命令的命令。sh[选项][脚本文件][参数...]⏹选项-c:从字符串中读取内容,并执行。-x:在每个命令执行之前,将其打印出来。-s:从标准流中读取内容
Linux vi常用命令
fengyehongWorld
Linux linux
参考资料viコマンド(vimコマンド)リファレンス目录一.保存系命令二.删除系命令三.移动系命令四.复制粘贴系命令一.保存系命令⏹保存并退出:wq⏹强制保存并退出:wq!⏹退出(文件未编辑):q⏹强制退出(忽略已编辑内容):q!⏹另存为:w新文件名二.删除系命令⏹删除当前行dd⏹清空整个文档gg:移动到文档顶部dG:删除到最后一行ggdG三.移动系命令⏹移动到文档顶部gg⏹移动到文档底部#方式1G
Linux查看服务器日志
TPBoreas
运维 linux 运维
一、tail这个是我最常用的一种查看方式用法如下:tail-n10test.log查询日志尾部最后10行的日志;tail-n+10test.log查询10行之后的所有日志;tail-fn10test.log循环实时查看最后1000行记录(最常用的)一般还会配合着grep用,(实时抓包)例如:tail-fn1000test.log|grep'关键字'(动态抓包)tail-fn1000test.log
Python多线程实现大规模数据集高效转移
sand&wich
网络 python 服务器
背景在处理大规模数据集时,通常需要在不同存储设备、不同服务器或文件夹之间高效地传输数据。如果采用单线程传输方式,当数据量非常大时,整个过程会非常耗时。因此,通过多线程并行处理可以大幅提升数据传输效率。本文将分享一个基于Python多线程实现的高效数据传输工具,通过遍历源文件夹中的所有文件,将它们移动到目标文件夹。工具和库这个数据集转移工具主要依赖于以下Python标准库:os:用于文件系统操作,如
笋丁网页自动回复机器人V3.0.0免授权版源码
希希分享
软希网58soho_cn 源码资源 笋丁网页自动回复机器人
笋丁网页机器人一款可设置自动回复,默认消息,调用自定义api接口的网页机器人。此程序后端语言使用Golang,内存占用最高不超过30MB,1H1G服务器流畅运行。仅支持Linux服务器部署,不支持虚拟主机,请悉知!使用自定义api功能需要有一定的建站基础。源码下载:https://download.csdn.net/download/m0_66047725/89754250更多资源下载:关注我。安
深入浅出 -- 系统架构之负载均衡Nginx的性能优化
xiaoli8748_软件开发
系统架构 系统架构 负载均衡 nginx
一、Nginx性能优化到这里文章的篇幅较长了,最后再来聊一下关于Nginx的性能优化,主要就简单说说收益最高的几个优化项,在这块就不再展开叙述了,毕竟影响性能都有多方面原因导致的,比如网络、服务器硬件、操作系统、后端服务、程序自身、数据库服务等,对于性能调优比较感兴趣的可以参考之前《JVM性能调优》中的调优思想。优化一:打开长连接配置通常Nginx作为代理服务,负责分发客户端的请求,那么建议开启H
最简单将静态网页挂载到服务器上(不用nginx)
全能全知者
服务器 nginx 运维 前端 html 笔记
最简单将静态网页挂载到服务器上(不用nginx)如果随便弄个静态网页挂在服务器都要用nignx就太麻烦了,所以直接使用Apache来搭建一些简单前端静态网页会相对方便很多检查Web服务器服务状态:sudosystemctlstatushttpd#ApacheWeb服务器如果发现没有安装web服务器:安装Apache:sudoyuminstallhttpd启动Apache:sudosystemctl
阿里云服务器4核8G配置购买及价格类文章汇总(10篇)
阿里云最新优惠和活动汇总
阿里云服务器4核8G配置如何购买?价格是多少?4核8G配置的阿里云服务器可以通过云服务器产品页购买也可以通过阿里云活动去下单购买,一般通过活动购买的用户比较多,但是不同实例规格的阿里云服务器价格不一样,带宽不同价格也不一样,本文为大家汇总了10篇关于阿里云服务器4核8G配置购买教程文章和价格类文章,分为购买类文章和价格类文章,以供大家参考如何购买阿里云服务器4核8G配置和最新优惠价格是多少。阿里云
windows下python opencv ffmpeg读取摄像头实现rtsp推流 拉流
图像处理大大大大大牛啊
opencv实战代码讲解 视觉图像项目 windows python opencv
windows下pythonopencvffmpeg读取摄像头实现rtsp推流拉流整体流程1.下载所需文件1.1下载rtsp推流服务器1.2下载ffmpeg2.开启RTSP服务器3.opencv读取摄像头并调用ffmpeg进行推流4.opencv进行拉流5.opencv异步拉流整体流程1.下载所需文件1.1下载rtsp推流服务器下载RTSP服务器下载页面https://github.com/blu
Linux CTF逆向入门
蚁景网络安全
linux 运维 CTF
1.ELF格式我们先来看看ELF文件头,如果想详细了解,可以查看ELF的manpage文档。关于ELF更详细的说明:e_shoff:节头表的文件偏移量(字节)。如果文件没有节头表,则此成员值为零。sh_offset:表示了该section(节)离开文件头部位置的距离+-------------------+|ELFheader|---++--------->+-------------------
NPM私库搭建-verdaccio(Linux)
Beam007
npm linux 前端
1、安装nodelinux服务器安装nodea)、官网下载所需的node版本https://nodejs.org/dist/v14.21.0/b)、解压安装包若下载的是xxx.tar.xz文件,解压命令为tar-xvfxxx.tar.xzc)、修改环境变量修改:/etc/profile文件#SETPATHFORNODEJSexportNODE_HOME=NODEJS解压安装的路径exportPAT
[实验室服务器使用]使用VSCode、PyCharm、MobaXterm和CMD连接远程服务器
YuanDaima2048
工具使用 服务器 vscode pycharm cmd 代理模式 机器学习 实验
文章总览:YuanDaiMa2048博客文章总览实验室服务器使用:使用VSCode、PyCharm、MobaXterm和CMD连接远程服务器在进行实验室工作时,远程连接服务器是常见的需求之一。本篇文章根据个人的一些使用介绍使用不同工具连接服务器的方法,并提供优化功能,使服务器能够使用本机代理的说明。准备服务器账号信息Host(主机):10.XXX.XX.XXXPort(端口):[SSHPort]U
C++常见知识掌握
nfgo
c++ 开发语言
1.Linux软件开发、调试与维护内核与系统结构Linux内核是操作系统的核心,负责管理硬件资源,提供系统服务,它是系统软件与硬件之间的桥梁。主要组成部分包括:进程管理:内核通过调度器分配CPU时间给各个进程,实现进程的创建、调度、终止等操作。使用进程描述符(task_struct)来存储进程信息,包括状态(就绪、运行、阻塞等)、优先级、内存映射等。内存管理:包括物理内存和虚拟内存管理。通过页表映
多线程编程之理财
周凡杨
java 多线程 生产者 消费者 理财
现实生活中,我们一边工作,一边消费,正常情况下会把多余的钱存起来,比如存到余额宝,还可以多挣点钱,现在就有这个情况:我每月可以发工资20000万元 (暂定每月的1号),每月消费5000(租房+生活费)元(暂定每月的1号),其中租金是大头占90%,交房租的方式可以选择(一月一交,两月一交、三月一交),理财:1万元存余额宝一天可以赚1元钱,
[Zookeeper学习笔记之三]Zookeeper会话超时机制
bit1129
zookeeper
首先,会话超时是由Zookeeper服务端通知客户端会话已经超时,客户端不能自行决定会话已经超时,不过客户端可以通过调用Zookeeper.close()主动的发起会话结束请求,如下的代码输出内容
Created /zoo-739160015
CONNECTEDCONNECTED
.............CONNECTEDCONNECTED
CONNECTEDCLOSEDCLOSED
SecureCRT快捷键
daizj
secureCRT 快捷键
ctrl + a : 移动光标到行首ctrl + e :移动光标到行尾crtl + b: 光标前移1个字符crtl + f: 光标后移1个字符crtl + h : 删除光标之前的一个字符ctrl + d :删除光标之后的一个字符crtl + k :删除光标到行尾所有字符crtl + u : 删除光标至行首所有字符crtl + w: 删除光标至行首
Java 子类与父类这间的转换
周凡杨
java 父类与子类的转换
最近同事调的一个服务报错,查看后是日期之间转换出的问题。代码里是把 java.sql.Date 类型的对象 强制转换为 java.sql.Timestamp 类型的对象。报java.lang.ClassCastException。
代码:
可视化swing界面编辑
朱辉辉33
eclipse swing
今天发现了一个WindowBuilder插件,功能好强大,啊哈哈,从此告别手动编辑swing界面代码,直接像VB那样编辑界面,代码会自动生成。
首先在Eclipse中点击help,选择Install New Software,然后在Work with中输入WindowBui
web报表工具FineReport常用函数的用法总结(文本函数)
老A不折腾
finereport web报表工具 报表软件 java报表
文本函数
CHAR
CHAR(number):根据指定数字返回对应的字符。CHAR函数可将计算机其他类型的数字代码转换为字符。
Number:用于指定字符的数字,介于1Number:用于指定字符的数字,介于165535之间(包括1和65535)。
示例:
CHAR(88)等于“X”。
CHAR(45)等于“-”。
CODE
CODE(text):计算文本串中第一个字
mysql安装出错
林鹤霄
mysql安装
[root@localhost ~]# rpm -ivh MySQL-server-5.5.24-1.linux2.6.x86_64.rpm Preparing... #####################
linux下编译libuv
aigo
libuv
下载最新版本的libuv源码,解压后执行:
./autogen.sh
这时会提醒找不到automake命令,通过一下命令执行安装(redhat系用yum,Debian系用apt-get):
# yum -y install automake
# yum -y install libtool
如果提示错误:make: *** No targe
中国行政区数据及三级联动菜单
alxw4616
近期做项目需要三级联动菜单,上网查了半天竟然没有发现一个能直接用的!
呵呵,都要自己填数据....我了个去这东西麻烦就麻烦的数据上.
哎,自己没办法动手写吧.
现将这些数据共享出了,以方便大家.嗯,代码也可以直接使用
文件说明
lib\area.sql -- 县及县以上行政区划分代码(截止2013年8月31日)来源:国家统计局 发布时间:2014-01-17 15:0
哈夫曼加密文件
百合不是茶
哈夫曼压缩 哈夫曼加密 二叉树
在上一篇介绍过哈夫曼编码的基础知识,下面就直接介绍使用哈夫曼编码怎么来做文件加密或者压缩与解压的软件,对于新手来是有点难度的,主要还是要理清楚步骤;
加密步骤:
1,统计文件中字节出现的次数,作为权值
2,创建节点和哈夫曼树
3,得到每个子节点01串
4,使用哈夫曼编码表示每个字节
JDK1.5 Cyclicbarrier实例
bijian1013
java thread java多线程 Cyclicbarrier
CyclicBarrier类
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环的 barrier。
CyclicBarrier支持一个可选的 Runnable 命令,
九项重要的职业规划
bijian1013
工作 学习
一. 学习的步伐不停止 古人说,活到老,学到老。终身学习应该是您的座右铭。 世界在不断变化,每个人都在寻找各自的事业途径。 您只有保证了足够的技能储
【Java范型四】范型方法
bit1129
java
范型参数不仅仅可以用于类型的声明上,例如
package com.tom.lang.generics;
import java.util.List;
public class Generics<T> {
private T value;
public Generics(T value) {
this.value =
【Hadoop十三】HDFS Java API基本操作
bit1129
hadoop
package com.examples.hadoop;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoo
ua实现split字符串分隔
ronin47
lua split
LUA并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是LUA可以很容易地被扩展:由宿主语言(通常是C或 C++)提供这些功能,LUA可以使用它们,就像是本来就内置的功能一样。LUA只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从 而适合嵌入在别的程序里。因此在lua中并没有其他语言那样多的系统函数。习惯了其他语言的字符串分割函
java-从先序遍历和中序遍历重建二叉树
bylijinnan
java
public class BuildTreePreOrderInOrder {
/**
* Build Binary Tree from PreOrder and InOrder
* _______7______
/ \
__10__ ___2
/ \ /
4
openfire开发指南《连接和登陆》
开窍的石头
openfire 开发指南 smack
第一步
官网下载smack.jar包
下载地址:http://www.igniterealtime.org/downloads/index.jsp#smack
第二步
把smack里边的jar导入你新建的java项目中
开始编写smack连接openfire代码
p
[移动通讯]手机后盖应该按需要能够随时开启
comsci
移动
看到新的手机,很多由金属材质做的外壳,内存和闪存容量越来越大,CPU速度越来越快,对于这些改进,我们非常高兴,也非常欢迎
但是,对于手机的新设计,有几点我们也要注意
第一:手机的后盖应该能够被用户自行取下来,手机的电池的可更换性应该是必须保留的设计,
20款国外知名的php开源cms系统
cuiyadll
cms
内容管理系统,简称CMS,是一种简易的发布和管理新闻的程序。用户可以在后端管理系统中发布,编辑和删除文章,即使您不需要懂得HTML和其他脚本语言,这就是CMS的优点。
在这里我决定介绍20款目前国外市面上最流行的开源的PHP内容管理系统,以便没有PHP知识的读者也可以通过国外内容管理系统建立自己的网站。
1. Wordpress
WordPress的是一个功能强大且易于使用的内容管
Java生成全局唯一标识符
darrenzhu
java uuid unique identifier id
How to generate a globally unique identifier in Java
http://stackoverflow.com/questions/21536572/generate-unique-id-in-java-to-label-groups-of-related-entries-in-a-log
http://stackoverflow
php安装模块检测是否已安装过, 使用的SQL语句
dcj3sjt126com
sql
SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern']
SHOW TABLES列举了给定数据库中的非TEMPORARY表。您也可以使用mysqlshow db_name命令得到此清单。
本命令也列举数据库中的其它视图。支持FULL修改符,这样SHOW FULL TABLES就可以显示第二个输出列。对于一个表,第二列的值为BASE T
5天学会一种 web 开发框架
dcj3sjt126com
Web 框架 framework
web framework层出不穷,特别是ruby/python,各有10+个,php/java也是一大堆 根据我自己的经验写了一个to do list,按照这个清单,一条一条的学习,事半功倍,很快就能掌握 一共25条,即便很磨蹭,2小时也能搞定一条,25*2=50。只需要50小时就能掌握任意一种web框架
各类web框架大同小异:现代web开发框架的6大元素,把握主线,就不会迷路
建议把本文
Gson使用三(Map集合的处理,一对多处理)
eksliang
json gson Gson map Gson 集合处理
转载请出自出处:http://eksliang.iteye.com/blog/2175532 一、概述
Map保存的是键值对的形式,Json的格式也是键值对的,所以正常情况下,map跟json之间的转换应当是理所当然的事情。 二、Map参考实例
package com.ickes.json;
import java.lang.refl
cordova实现“再点击一次退出”效果
gundumw100
android
基本的写法如下:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
//navigator.splashscreen.hide();
document.addEventListener("b
openldap configuration leaning note
iwindyforest
configuration
hostname // to display the computer name
hostname <changed name> // to change
go to: /etc/sysconfig/network, add/modify HOSTNAME=NEWNAME to change permenately
dont forget to change /etc/hosts
Nullability and Objective-C
啸笑天
Objective-C
https://developer.apple.com/swift/blog/?id=25
http://www.cocoachina.com/ios/20150601/11989.html
http://blog.csdn.net/zhangao0086/article/details/44409913
http://blog.sunnyxx
jsp中实现参数隐藏的两种方法
macroli
JavaScript jsp
在一个JSP页面有一个链接,//确定是一个链接?点击弹出一个页面,需要传给这个页面一些参数。//正常的方法是设置弹出页面的src="***.do?p1=aaa&p2=bbb&p3=ccc"//确定目标URL是Action来处理?但是这样会在页面上看到传过来的参数,可能会不安全。要求实现src="***.do",参数通过其他方法传!//////
Bootstrap A标签关闭modal并打开新的链接解决方案
qiaolevip
每天进步一点点 学习永无止境 bootstrap 纵观千象
Bootstrap里面的js modal控件使用起来很方便,关闭也很简单。只需添加标签 data-dismiss="modal" 即可。
可是偏偏有时候需要a标签既要关闭modal,有要打开新的链接,尝试多种方法未果。只好使用原始js来控制。
<a href="#/group-buy" class="btn bt
二维数组在Java和C中的区别
流淚的芥末
java c 二维数组 数组
Java代码:
public class test03 {
public static void main(String[] args) {
int[][] a = {{1},{2,3},{4,5,6}};
System.out.println(a[0][1]);
}
}
运行结果:
Exception in thread "mai
systemctl命令用法
wmlJava
linux systemctl
对比表,以 apache / httpd 为例 任务 旧指令 新指令 使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service 使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service 检查服务状态 service h