---
# System prepended metadata

title: free5gc 啟動腳本
tags: [網路管理與分析]

---

## 使用 ssh 連線虛擬機

### 如何查看你的主機 ip

在你的虛擬機輸入以下指令
```bash=
ifconfig
```

![](https://hackmd.io/_uploads/BkxfuiRWp.png)

### ssh 連線

開啟你的 Powershell 輸入以下指令

```bash=
ssh [你的帳號]@[你的主機ip]
```

例如
```bash=
ssh alen911018@192.168.56.102
```
輸入密碼即連線成功

![](https://hackmd.io/_uploads/rys_KsRZp.png =800x)

## Free5GC

### 建立 run.sh 檔案

開啟你的 free5gc 虛擬機，輸入以下指令
```bash=
sudo vim run.sh
```

### 在 vim 中編輯

1. 按下 <kbd>i</kbd>，螢幕左下角要顯示 `-- INSERT --`。
2. 打入以下程式碼 (若你是在 Powershell 編輯，可以直接 <kbd>ctl</kbd> + <kbd>c</kbd> , <kbd>ctl</kbd> + <kbd>v</kbd>貼上)。
```bash=
#!/bin/bash

echo [你的密碼] | sudo -S iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

SESSION="free5gc"
WINDOW="$SESSION:main"

# 刪除現有的 tmux
tmux kill-session -t $SESSION

# 建立 session
tmux new-session -d -s $SESSION

# window 重命名
tmux rename-window -t $SESSION:0 "main"

# 傳送指令
tmux send-keys -t $WINDOW "echo [你的密碼] | sudo -S ls" C-m
tmux send-keys -t $WINDOW "cd ~/free5gc/" C-m
tmux send-keys -t $WINDOW "./force_kill.sh" C-m
tmux send-keys -t $WINDOW "./run.sh" C-m

# 分割 pane
tmux split-pane -h -t $WINDOW

# 傳送命令
tmux send-keys "cd ~/free5gc/webconsole/" C-m
tmux send-keys "go run server.go" C-m

# attach session
tmux a -t $SESSION
``` 
3. 按下 <kbd>esc</kbd> 再按下 <kbd>shift</kbd> + <kbd>;</kbd> (就是 <kbd>:</kbd> 的意思)。
4. 輸入 `wq`, 按下 <kbd>Enter</kbd> 存檔並離開。

:::danger
**NOTE**: [你的密碼] 部分要改成你的密碼。(中括號 `[]` 不用加)
:::

### 執行 run.sh 

```bash=
sh ./run.sh
```

或是把腳本檔案加上執行權限，就可以直接執行腳本，不需要透過 `sh` 指令
```bash=
sudo chmod +x ./run.sh
./run.sh
```

## UERANSIM

### 建立 run.sh 檔案

```bash=
sudo vim run.sh
```

### 在 vim 中編輯

1. 按下 <kbd>i</kbd>，螢幕左下角要顯示 `-- INSERT --`。
2. 打入以下程式碼 (若你是在 Powershell 編輯，可以直接 <kbd>ctl</kbd> + <kbd>c</kbd> , <kbd>ctl</kbd> + <kbd>v</kbd> 貼上)。
```bash=
#!/bin/bash

SESSION="ueransim"
WINDOW="$SESSION:main"

# 刪除現有的 tmux
tmux kill-session -t $SESSION

# 建立 session
tmux new-session -d -s $SESSION # -d: detach

# window 重命名
tmux rename-window -t $SESSION:0 "main"

# 傳送命令
tmux send-keys -t $WINDOW 'cd ~/UERANSIM/build/' C-m # cd ~/UERANSIM/build/
tmux send-keys -t $WINDOW './nr-gnb -c ../config/free5gc-gnb.yaml' C-m

# 水平分割 pane
tmux split-window -h -t $WINDOW

# 傳送命令
tmux send-keys -t $WINDOW "echo [你的密碼] | sudo -S ls" C-m
tmux send-keys -t $WINDOW 'cd ~/UERANSIM/build' C-m
tmux send-keys -t $WINDOW 'sudo ./nr-ue -c ../config/free5gc-ue.yaml' C-m

sleep 5
sh ./ping.sh
``` 
3. 按下 <kbd>esc</kbd> 再按下 <kbd>shift</kbd> + <kbd>;</kbd> (就是 <kbd>:</kbd> 的意思)。
4. 輸入 `wq`, 按下 <kbd>Enter</kbd> 存檔並離開。

:::danger
**NOTE**: [你的密碼] 部分要改成你的密碼。 (中括號 `[]` 不用加)
:::

### 建立 ping.sh 檔案

```bash=
sudo vim ping.sh
```

同前面使用 vim 的方法複製以下內容

```bash=
#!/bin/bash

echo 0000 | sudo -S ip route add default dev uesimtun0
ping -c 8 -I uesimtun0 google.com
```

### 執行 run.sh 

```bash=
sh ./run.sh
```

## 批量刪除 subscriber

```shell
for i in {0..2067}
do
    num=$((208930000000000 + i))
    strNum="$num"
    str="imsi-$strNum"
    #echo "　http://192.168.56.102:5000/api/subscriber/$str/20893"
    curl -v -X DELETE http://192.168.56.102:5000/api/subscriber/$str/20893 -H "Token: admin"
done
```