Ubuntuのプロキシ設定がめんどくさいので、shellスクリプトで自動化した話

## はじめに
こんにちは～ 
沖縄高専メディア情報工学科1年のプラナリアです！
今回は、Ubuntuでプロキシを
自動で設定するShellスクリプトを紹介します！
## 目次
* [はじめに](#はじめに)
* [シェルスクを作ろうと思った経緯](#シェルスクを作ろうと思った経緯)
* [作ったもの](#作ったもの)
* [おわりに](#おわりに)
## シェルスクを作ろうと思った経緯
学校からハッカソンに行ったときや、外部に行って開発を行う際に、
以下のようなことが起きるんスよねぇ。。。
```
- sudo apt update
.
. (なんかもろもろ書かれる)
.
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease  Temporary failure resolving 'archive.ubuntu.com'
```
初見の私 << "なぁにこれぇ。。。"
原因を探すと、弊学のプロキシに接続できてないことが問題らしい。。。
なら、以下のファイルを変更すれば良いということである。
```
$ ~/.bashrc
.
.
export HTTP_PROXY="http://proxy.example:port/"
export HTTPS_PROXY={HTTP_PROXY}
```
```
$ /etc/apt/apt.conf
Aquire::http::Proxy "http://proxy.example:port";
Aquire::https::Proxy "http://proxy.example:port";
```
この2つのファイルを、以下に変更すれば
sudo apt update をしても
Fetchエラーは発生しない。
```
$ ~/.bashrc
.
.
export HTTP_PROXY=""
export HTTPS_PROXY=""
```
```
$ /etc/apt/apt.conf
Aquire::http::Proxy "";
Aquire::https::Proxy "";
```
それじゃあ、echoとsedを使って文字列の書き込みと削除を行っていきます。
## 作ったもの
まずはディレクトリ構造から。
```
- Proxy
| - change_bashrc.sh
| - change_aptconf.sh
| - proxy.sh
```
ファイルの中身を変更するスクリプトは、
change_bashrc.sh とchange_aptconf.sh です。
proxy.sh で上記2つのファイルを実行します。
以下それぞれのファイルです。
```
$ /Proxy/change_bashrc.sh

#!/bin/sh
# 単独で実行するなら、source ~/Proxy/change_bashrc.shで実行してね
echo ' - This Is Setting Up .bashrc - ' 
echo ' - Select options'
echo " - 1.proxy  2.the_other":
read select
if [ $select -eq 2 ]; then
    sed -i -e "/proxy.example:port/d" /絶対パス/.bashrc
    sed -i -e "/export HTTPS_PROXY={HTTP_PROXY}/d" /絶対パス/.bashrc
    echo Finish Update
elif [ $select -eq 1 ]; then
    sed -i -e "/proxy.example:port/d" /絶対パス/.bashrc
    sed -i -e "/export HTTPS_PROXY={HTTP_PROXY}/d" /絶対パス/.bashrc
    echo 'export HTTP_PROXY="proxy.example:port/"' | cat >> /絶対パス/.bashrc
    echo 'export HTTPS_PROXY={HTTP_PROXY}' | cat >> /絶対パス/.bashrc
else
    echo error
fi

echo " - Finish Update .bashrc - "
```
```
$ /Proxy/change_aptconf.sh

#!/bin/sh
# 単独で実行するなら、sudo sh ~/Proxy/change_aptconf.shで実行してね
echo ' - This Is Setting Up apt.conf - ' 
echo ' - Select options'
echo " - 1.proxy  2.the_other":
read select
if [ $select -eq 2 ]; then
    sed -i -e "/proxy.example:port/d" /絶対パス/apt.conf
    echo  'Acquire::http::Proxy "";' | cat > /絶対パス/apt.conf
    echo  'Acquire::https::Proxy "";' | cat >> /絶対パス/apt.conf
elif [ $select -eq 1 ]; then
    echo 'Acquire::http::Proxy "http://proxy.example:port/";' | cat > /絶対パス/apt.conf
    echo 'Acquire::https::Proxy "http://proxy.example:port/";' | cat >> /絶対パス/apt.conf
else
    echo error
fi

echo " - Finish Update aptconf - "
```
```
$ /Proxy/proxy.sh

#!/bin/sh
# 単独で実行するなら、sudo sh ~/proxy.shで実行してね
echo ' - Start setup proxy - '
read -p "1. Setup .bashrc[Y/n]" yn
case "$yn" in [yY]*) ;; *) "Abort" ; exit ;; esac
sh /絶対パス/Proxy/change_bashrc.sh

read -p "2. Setup apt.conf[Y/n]" yn
case "$yn" in [yY]*) ;; *) "Abort" ; exit ;; esac
sh /絶対パス/Proxy/change_aptconf.sh

echo ' - Finish Setup - '
```
実行するとこうなります。
```
> sudo sh ~/Proxy/proxy.sh
[sudo] password for user: 
- Start setup proxy - 
1. Setup .bashrc[Y/n]
> y
 - This Is Setting Up .bashrc - 
 - Select options
 - 1.proxy  2.the_other:
> 1
 - Finish Update .bashrc - 
2. Setup apt.conf[Y/n]
> y
 - This Is Setting Up apt.conf - 
 - Select options
 - 1.proxy  2.the_other:
> 1
 - Finish Update aptconf - 
 - Finish Setup -
```
## おわりに
結論：
セキュリティ上プロキシサーバーを通すのはわかるが、
結局変更がめんどい＋仕様が理解できてないと直せない
ので、教員たちから力をつけるのも含めて試されているのかもしれませんね
しらんけど。