# 命令行工具

## FuzzX CLI 的本地配置

测试环境：`Ubuntu:18.04`

### 1. 直接使用可执行文件（推荐）

1. 从代码仓库下载编译过后的二进制文件
2. 将该二进制文件放在工程项目的根目录下(即与`fuzzx.yaml`处于同一目录)
3. 在该目录执行如下命令即可看到 `fuzzx` 的提示：

{% tabs %}
{% tab title="Ubuntu" %}

```bash
$ mv fuzzx_for_Ubuntu fuzzx
$ chmod +x fuzzx
$ PATH=$PWD:$PATH
$ fuzzx
```

{% endtab %}

{% tab title="MacOS" %}

```bash
$ mv fuzzx_for_MacOS fuzzx
$ chmod +x fuzzx
$ PATH=$PWD:$PATH
$ fuzzx
```

{% endtab %}
{% endtabs %}

> 每开启一个新终端，都不要忘记第二行的添加环境变量，不添加环境变量系统是无法找到fuzzx的。

### 2.源码编译

1. 确保你的机器有Golang语言环境:

   ```
   $ go version
   ```

   如果没有，登陆[Golang中文网站](https://golang.google.cn/)下载。

   然后为Go更换国内proxy：

   ```
   $ go env -w GOPROXY=https://goproxy.cn,direct
   ```
2. 创建Go语言工作空间：\\

   **我们默认工作空间路径为`~/go/`,请根据您的实际情况填写**

   ```
   $ mkdir ~/go/src 
   $ cd ~/go/src
   ```
3. 拉取命令行程序源码： (*目前仓库为private*)

   ```
   $ git clone https://github.com/guardstrikelab/fuzzx_cli.git ./fuzzx
   ```
4. 进入项目文件夹，安装：

   ```
   $ cd fuzzx
   $ go install
   ```
5. 添加环境变量

   ```
   $ export GOBIN=~/go/bin
   $ export PATH=$PATH:$GOBIN
   ```
6. 输入命令进行测试，根据提示操作即可。

   ```
   $ fuzzx
   ```

注意：5.中添加环境变量命令更换终端后则失效，替换为以下命令则可在当前用户下永久有效。

```bash
$ echo "export GOBIN=~/go/bin" >> ~/.bashrc
$ echo "export PATH=$PATH:$GOBIN" >> ~/.bashrc
$ source ~/.bashrc
```

## FuzzX CLI的使用

> 默认您直接使用二进制文件，如果您是自行从源码编译，请在执行命令前添加环境变量，并去掉命令中的\`./\`。

### login

使用该命令进行身份确认，完成`login`的用户才能使用CLI的其他命令

具体命令如下：

```bash
$ fuzzx login <id> <key>
```

*\<id> 和 \<key> 就是您在`FuzzX`平台的*[*个人信息*](https://guardstrikelab.gitbook.io/fuzzx/ping-tai/nei-bu-xi-jie#8-yong-hu-xin-xi)*处所看到的。*

### logout

登出功能

```bash
$ fuzzx logout
```

### validate

当您在配置项目时，使用该命令可以验证本地编辑的`fuzzx.yaml`文件的正确性：

```bash
$ fuzzx validate
```

### build

该命令在本地编译、插桩您的项目，并在本地重现出我们在服务端提供给您的错误信息：

```bash
$ fuzzx build <BugKey>
```
