当前位置: 首页 > news >正文

网站做防御爱链工具

网站做防御,爱链工具,济南网站建设行知科技不错a,ios网站开发工具有哪些本文介绍了一个基于 C、SQLite 和 Boost 库的简单交互式数据库操作 Shell。该 Shell 允许用户通过命令行输入执行各种数据库操作#xff0c;包括添加、删除主机信息#xff0c;设置主机到特定主机组#xff0c;以及显示主机和主机组列表。通过调用 SQLite3 库实现数据库连接…本文介绍了一个基于 C、SQLite 和 Boost 库的简单交互式数据库操作 Shell。该 Shell 允许用户通过命令行输入执行各种数据库操作包括添加、删除主机信息设置主机到特定主机组以及显示主机和主机组列表。通过调用 SQLite3 库实现数据库连接和操作以及使用 Boost 库进行字符串解析和格式化。该交互式 Shell 提供了一些基本的命令使用户能够方便地管理主机信息和组织结构。代码结构清晰易于理解可根据需要扩展和定制功能。 数据库的基本使用方法请看《C/C 通过SQLiteSDK增删改查》这篇文章针对如何使用Boost解析命令行参数请看《4.9 C Boost 命令行解析库》这篇文章此处只给出实现代码如下所示 #define _CRT_SECURE_NO_WARNINGS #include iostream #include string #include map #include vector #include time.h #include sqlite3.h#include boost/format.hpp #include boost/tokenizer.hpp #include boost/lexical_cast.hppusing namespace std; using namespace boost;sqlite3* open_database(std::string database_name) {int ref -1;sqlite3 *db 0;ref sqlite3_open(database_name.c_str(), db);if (ref SQLITE_OK)return db;return false; } bool close_database(sqlite3 *db) {int ref sqlite3_close(db);if (ref SQLITE_OK)return true;return false; } bool exec_sql(sqlite3 *db, char *sql) {char *error_code 0;int ref sqlite3_exec(db, sql, 0, 0, error_code);if (ref SQLITE_OK){return true;}return false; }// 初始化创建表结构 void Init_Database() {sqlite3* open_db open_database(./database.db);if (open_db ! false){std::string sql create table HostDB(uid primary key,host_address char(128) not null,host_username char(128) not null,host_password char(128) not null,host_port char(128) not null,host_group char(128) not null default DefaultGroup);;char run_sql[1024] { 0 };strcpy(run_sql, sql.c_str());exec_sql(open_db, run_sql);}close_database(open_db); }// 增加一条主机记录 void AddHost_DB(sqlite3* open_db, std::string address, std::string username, std::string password, std::string port) {std::string format_string boost::str(boost::format(insert into HostDB(host_address,host_username,host_password,host_port) values(%s,%s,%s,%s);) % address %username %password %port);char run_sql[2048] { 0 };strcpy(run_sql, format_string.c_str());bool ref exec_sql(open_db, run_sql);if (ref true){std::cout [] 增加主机: address 完成 std::endl;} }// 删除特定主机记录 void DeleteHost_DB(sqlite3 *open_db, std::string address) {std::string format_string boost::str(boost::format(delete from HostDB where host_address %s;) % address);char run_sql[2048] { 0 };strcpy(run_sql, format_string.c_str());bool ref exec_sql(open_db, run_sql);if (ref true){std::cout [-] 删除主机: address 完成 std::endl;} }// 将特定主机加入到特定主机组 void SetHostGroup_DB(sqlite3* open_db, std::string address, std::string group_name) {std::string format_string boost::str(boost::format(update HostDB set host_group%s where host_address %s;) % group_name %address);char run_sql[2048] { 0 };strcpy(run_sql, format_string.c_str());bool ref exec_sql(open_db, run_sql);if (ref true){std::cout [] 主机: address 已加入到: group_name 组 std::endl;} }// 输出所有主机组 void ShowHostGroup_DB(sqlite3 *open_db) {sqlite3_stmt *stmt 0;// std::string format_string SELECT distinct(host_group) FROM HostDB;;std::string format_string SELECT host_group,count(*) FROM HostDB GROUP BY host_group;;char run_sql[1024] { 0 };strcpy(run_sql, format_string.c_str());int ref sqlite3_prepare_v2(open_db, run_sql, -1, stmt, 0);if (ref SQLITE_OK){while (sqlite3_step(stmt) SQLITE_ROW){const unsigned char *host_group sqlite3_column_text(stmt, 0);int host_group_count sqlite3_column_int(stmt, 1);std::cout host_group host_group_count std::endl;}}sqlite3_finalize(stmt); }// 输出所有主机 void ShowHost_DB(sqlite3 *open_db) {sqlite3_stmt *stmt 0;std::string format_string select * from HostDB;;char run_sql[1024] { 0 };strcpy(run_sql, format_string.c_str());int ref sqlite3_prepare_v2(open_db, run_sql, -1, stmt, 0);if (ref SQLITE_OK){while (sqlite3_step(stmt) SQLITE_ROW){const unsigned char *host_address sqlite3_column_text(stmt, 1);const unsigned char *host_username sqlite3_column_text(stmt, 2);const unsigned char *host_paddword sqlite3_column_text(stmt, 3);const unsigned char *host_port sqlite3_column_text(stmt, 4);const unsigned char *host_group sqlite3_column_text(stmt, 5);std::cout host_address host_username host_paddword host_port host_group std::endl;}}sqlite3_finalize(stmt); }// 输出特定主机组中的主机 void ShowGroupHostList(sqlite3 *open_db, std::string group_name) {sqlite3_stmt *stmt 0;std::string format_string boost::str(boost::format(select * from HostDB where host_group %s;) % group_name);char run_sql[2048] { 0 };strcpy(run_sql, format_string.c_str());int ref sqlite3_prepare_v2(open_db, run_sql, -1, stmt, 0);if (ref SQLITE_OK){std::cout ---------------------------------------------------------- std::endl;std::cout 主机组: group_name std::endl;std::cout ---------------------------------------------------------- std::endl;while (sqlite3_step(stmt) SQLITE_ROW){const unsigned char *host_address sqlite3_column_text(stmt, 1);const unsigned char *host_username sqlite3_column_text(stmt, 2);const unsigned char *host_port sqlite3_column_text(stmt, 4);std::cout host_address host_username host_port std::endl;}}sqlite3_finalize(stmt); }int main(int argc, char const *argv[]) {sqlite3* open_db open_database(./database.db);Init_Database();std::string command;while (1){std::cout [ LyShark Shell ] # ;std::getline(std::cin, command);if (command.length() 0){continue;}else if (command help){std::cout 帮助菜单 std::endl;}else{boost::char_separatorchar sep(, --);typedef boost::tokenizerboost::char_separatorchar CustonTokenizer;CustonTokenizer tok(command, sep);std::vectorstd::string vecSegTag;for (CustonTokenizer::iterator beg tok.begin(); beg ! tok.end(); beg){vecSegTag.push_back(*beg);}if (vecSegTag.size() 9 vecSegTag[0] AddHost){if (vecSegTag[1] address vecSegTag[3] username vecSegTag[5] password vecSegTag[7] port){std::string set_address vecSegTag[2];std::string set_username vecSegTag[4];std::string set_password vecSegTag[6];std::string set_port vecSegTag[8];AddHost_DB(open_db, set_address, set_username, set_password, set_port);}}else if (vecSegTag.size() 3 vecSegTag[0] DeleteHost){if (vecSegTag[1] address){std::string set_address vecSegTag[2];DeleteHost_DB(open_db, set_address);}}else if (vecSegTag.size() 5 vecSegTag[0] SetHostGroup){if (vecSegTag[1] address vecSegTag[3] group){std::string set_address vecSegTag[2];std::string set_group vecSegTag[4];SetHostGroup_DB(open_db, set_address, set_group);}}else if (vecSegTag.size() 1 vecSegTag[0] ShowHost){std::cout ----------------------------------------------------------------------------- std::endl;std::cout IP地址 用户名 密码 端口号 默认组 std::endl;std::cout ----------------------------------------------------------------------------- std::endl;ShowHost_DB(open_db);}else if (vecSegTag.size() 1 vecSegTag[0] ShowHostGroup){std::cout ----------------------------------------------------------------------------- std::endl;std::cout 主机组名 主机数量 std::endl;std::cout ----------------------------------------------------------------------------- std::endl;ShowHostGroup_DB(open_db);}else if (vecSegTag.size() 3 vecSegTag[0] ShowGroupHostList){if (vecSegTag[1] group){std::string set_group vecSegTag[2];ShowGroupHostList(open_db, set_group);}}}}close_database(open_db);return 0; }添加主机记录: AddHost --address 192.168.1.1 --username root --password 1233 --port 22 删除主机记录: DeleteHost --address 192.168.1.1 将特定主机设置到主机组: SetHostGroup --address 192.168.1.1 --group WebServer 输出所有主机列表: ShowHost 输出所有主机组: ShowHostGroup 输出特定主机组中的主机: ShowGroupHostList --group DefaultGroup
http://www.zqtcl.cn/news/116809/

相关文章:

  • 企业类网站有哪些甘肃省和住房建设厅网站
  • 嘉兴市住房和城乡建设局网站wordpress nodejs版本
  • 做网站 百度推广深圳外贸招聘
  • 网站留言板功能网站建设 核对流程
  • WordPress输出当前网址郑州官网seo厂家
  • c 网站开发框架wordpress建站的教程
  • 营销 推广 网站王烨演的电视剧
  • 阳泉营销型网站建设网站360做的标记如何取消
  • win7 iis asp网站配置文件注册建设网站的公司网站
  • 品牌网站建设预算网站制作过程内容
  • 石河子建设网站网站开发参考资料
  • 网站开发招标参数wordpress个性化友情链接页面
  • 建设企业网站有哪些wordpress进入中国市场
  • 大学社团网站建设虚拟主机如何做网站
  • 销售的产品是帮别人做网站电脑搭建网站
  • h5商城网站是什么莆田网站建设技术托管
  • 优惠券怎么做自己的网站英文网站怎么设计
  • 做网站怎么样才能排在首页做微网站的公司哪家好呢
  • 分析网站外链分析工具wordpress同步简书
  • 电子商务网站案例分析互动游戏制作软件
  • 网站做子域名做美团旅游网站多少钱
  • php做网站架构图开家做网站公司有哪些
  • 专门做ppt会员网站鄞州网站制作
  • 企业网站开发视频请简述网站建设流程图
  • 做网站 做手机app要学什么软件网站在哪里购买
  • 老罗做的网站赣州建设部网站
  • 四川建设主管部门网站盘搜搜
  • 创造网站的最简单 软件是哪个免费全自动推广平台
  • 如何看网站做的好坏vs2017做网站
  • 电子商务网站开发费用入账wordpress商城主题模板下载