CRemoteExec远程执行类

本文介绍了一个用于远程执行命令的框架,该框架支持多种连接类型如SSH、Telnet等,并能够根据不同场景进行匹配与响应。文章详细阐述了核心类CRemoteExec的功能及使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 通用库
namespace Common
{
	const char PS1[] = "EXPECT:";

	// 连接类型
	enum Enum_Conn_Type
	{
		SU = 0,
		SSH = 1,
		TELNET = 2
	};

	// 匹配类别
	enum Enum_Match_Type
	{
		MATCH_SUCC = 0,
		MATCH_FAIL = 1,
		MATCH_REPLY = 2
	};

	// 匹配信息
	typedef struct MatchInfo
	{
		exp_type expType;
		string strMatch;
		string strReply;
	}*PMatchInfo;

	// 登录信息
	typedef struct LoginInfo
	{
		Enum_Conn_Type eConType;
		string strAddr;
		string strUser;
		string strPwd;
	}*PLoginInfo;

	class CRemoteExec
	{
	public:
		CRemoteExec();
		virtual ~CRemoteExec();

	public:
		// 连接远程主机
		bool Connect(const PLoginInfo pLoginInfo, const PMatchInfo pMatchSucc,
			const PMatchInfo pMatchFail, const PMatchInfo pMatchReply = NULL);
		// 执行命令
		bool ExecOrder(const string& strOrder);
		// 匹配命令返回
		bool GetMatchInfo(const PMatchInfo pMatchSucc, const PMatchInfo pMatchFail, const PMatchInfo pMatchReply = NULL);
		// 获取匹配字符串
		std::string GetMatch();
		// 获取连接PID
		pid_t GetExpPid();
		// 获取错误码
		int GetErrorCode();
		// 设置超时时间
		void SetTimeout(unsigned int nTimeout);
		// 关闭连接
		void Close();

	private:
		int m_fd;
		int m_iErrorCode;
		Tcl_Interp* m_pTcl;
		std::string m_strMatch;
	};
}


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值