linux中shell指令碼一鍵安裝ngrok

來源:互聯網
上載者:User

 最近要對內網進行調試和訪問,買了3個花生棒才只能映射6個連接埠,實在是不能滿足需要,剛好有個朋友給我說了ngrok也可以進行內網穿透,研究了幾天,光安裝就要搞死一幫人,還好在github上找到個一鍵安裝ngrok的腳步,先共用給大家.
 系統:centos 6.x(64位)

指令碼內容:
cat ngrok.sh

#!/bin/bash
# -*- coding: UTF-8 -*-

# 擷取當前指令碼執行路徑
SELFPATH=$(cd "$(dirname "$0")"; pwd)
GOOS=`go env | grep GOOS | awk -F\" '{print $2}'`
GOARCH=`go env | grep GOARCH | awk -F\" '{print $2}'`
echo '請輸入一個網域名稱'
read DOMAIN
install_yilai(){
 yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ unzip
}

# 安裝git
install_git(){
 unstall_git
 if [ ! -f $SELFPATH/git-2.6.0.tar.gz ];then
  wget https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz
 fi
 tar zxvf git-2.6.0.tar.gz
 cd git-2.6.0
 ./configure --prefix=/usr/local/git
 make
 make install
 ln -s /usr/local/git/bin/* /usr/bin/
 rm -rf $SELFPATH/git-2.6.0
}

# 卸載git
unstall_git(){
 rm -rf /usr/local/git
 rm -rf /usr/local/git/bin/git
 rm -rf /usr/local/git/bin/git-cvsserver
 rm -rf /usr/local/git/bin/gitk
 rm -rf /usr/local/git/bin/git-receive-pack
 rm -rf /usr/local/git/bin/git-shell
 rm -rf /usr/local/git/bin/git-upload-archive
 rm -rf /usr/local/git/bin/git-upload-pack
}


# 安裝go
install_go(){
 cd $SELFPATH
 uninstall_go
 # 動態連結程式庫,用於下面的判斷條件生效
 ldconfig
 # 判斷作業系統位元下載不同的安裝包
 if [ $(getconf WORD_BIT) = '32' ] && [ $(getconf LONG_BIT) = '64' ];then
  # 判斷檔案是否已經存在
  if [ ! -f $SELFPATH/go1.4.2.linux-amd64.tar.gz ];then
   wget http://www.golangtc.com/static/go/1.4.2/go1.4.2.linux-amd64.tar.gz
  fi
     tar zxvf go1.4.2.linux-amd64.tar.gz
 else
  if [ ! -f $SELFPATH/go1.4.2.linux-386.tar.gz ];then
   wget http://www.golangtc.com/static/go/1.4.2/go1.4.2.linux-386.tar.gz
  fi
     tar zxvf go1.4.2.linux-386.tar.gz
 fi
 mv go /usr/local/
 ln -s /usr/local/go/bin/* /usr/bin/
}

# 卸載go

uninstall_go(){
 rm -rf /usr/local/go
 rm -rf /usr/bin/go
 rm -rf /usr/bin/godoc
 rm -rf /usr/bin/gofmt
}

# 安裝ngrok
install_ngrok(){
 uninstall_ngrok
 cd /usr/local
 if [ ! -f /usr/local/ngrok.zip ];then
  cd /usr/local/
  wget http://www.sunnyos.com/ngrok.zip
 fi
 unzip ngrok.zip
 export GOPATH=/usr/local/ngrok/
 export NGROK_DOMAIN=$DOMAIN
 cd ngrok
 openssl genrsa -out rootCA.key 2048
 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
 openssl genrsa -out server.key 2048
 openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
 openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
 cp rootCA.pem assets/client/tls/ngrokroot.crt
 cp server.crt assets/server/tls/snakeoil.crt
 cp server.key assets/server/tls/snakeoil.key
 # 替換下載源地址
 sed -i 's#code.google.com/p/log4go#github.com/keepeye/log4go#' /usr/local/ngrok/src/ngrok/log/logger.go
 cd /usr/local/go/src
 GOOS=$GOOS GOARCH=$GOARCH ./make.bash
 cd /usr/local/ngrok
 GOOS=$GOOS GOARCH=$GOARCH make release-server
 /usr/local/ngrok/bin/ngrokd -domain=$NGROK_DOMAIN -httpAddr=":80"
}

# 卸載ngrok
uninstall_ngrok(){
 rm -rf /usr/local/ngrok
}

# 編譯用戶端
compile_client(){
 cd /usr/local/go/src
 GOOS=$1 GOARCH=$2 ./make.bash
 cd /usr/local/ngrok/
 GOOS=$1 GOARCH=$2 make release-client
}

# 產生用戶端
client(){
 echo "1、Linux 32位"
 echo "2、Linux 64位"
 echo "3、Windows 32位"
 echo "4、Windows 64位"
 echo "5、Mac OS 32位"
 echo "6、Mac OS 64位"
 echo "7、Linux ARM"

 read num
 case "$num" in
  [1] )
   compile_client linux 386
  ;;
  [2] )
   compile_client linux amd64
  ;;
  [3] )
   compile_client windows 386
  ;;
  [4] )
   compile_client windows amd64
  ;;
  [5] )
   compile_client darwin 386
  ;;
  [6] )
   compile_client darwin amd64
  ;;
  [7] )
   compile_client linux arm
  ;;
  *) echo "選擇錯誤,退出";;
 esac

}


echo "請輸入下面數字進行選擇"
echo "#############################################"
echo "#作者網名:Sunny"
echo "#作者部落格:www.sunnyos.com"
echo "#作者QQ:327388905"
echo "#作者QQ群:57914191"
echo "#作者微博:http://weibo.com/2442303192"
echo "#############################################"
echo "------------------------"
echo "1、全新安裝"
echo "2、安裝依賴"
echo "3、安裝git"
echo "4、安裝go環境"
echo "5、安裝ngrok"
echo "6、產生用戶端"
echo "7、卸載"
echo "8、啟動服務"
echo "9、查看設定檔"
echo "------------------------"
read num
case "$num" in
 [1] )
  install_yilai
  install_git
  install_go
  install_ngrok
 ;;
 [2] )
  install_yilai
 ;;
 [3] )
  install_git
 ;;
 [4] )
  install_go
 ;;
 [5] )
  install_ngrok
 ;;
 [6] )
  client
 ;;
 [7] )
  unstall_git
  uninstall_go
  uninstall_ngrok
 ;;
 [8] )
  echo "輸入啟動網域名稱"
  read domain
  echo "啟動連接埠"
  read port
  /usr/local/ngrok/bin/ngrokd -domain=$domain -httpAddr=":$port"
 ;;
 [9] )
  echo "輸入啟動網域名稱"
  read domain
  echo server_addr: '"'$domain:4443'"'
  echo "trust_host_root_certs: false"

 ;;
 *) echo "";;
esac

ps:
這個腳步只適合centos,其他linux的請另外找吧.

預設安裝路徑
git:/usr/local/git
go:/usr/local/go
ngrok:/usr/local/ngrok

用戶端編譯好存放的路徑:
/usr/local/ngrok/bin/

ngrok服務端啟動命令:
nohup /usr/local/ngrok/bin/ngrokd -domain="slogra.com" -tlsCrt="/usr/local/ngrok/server.crt" -tlsKey="/usr/local/ngrok/server.key" -httpAddr=":8080" -tunnelAddr=":4443" -log-level="INFO" >/var/log/ngrok.log 2>&1 &

ngrok用戶端設定檔:
server_addr: "你自己的網域名稱:4443"
tunnels:
  www:
   subdomain: "test" #定義伺服器分配網域名稱首碼,跟平台上的要一樣
   proto:
    http: 80 #映射連接埠,不加ip預設本機
    https: 80
  web:
   subdomain: "web" #定義伺服器分配網域名稱首碼
   proto:
    http: 192.168.1.100:80 #映射連接埠,可以通過加ip為內網任意一台映射
    https: 192.168.1.100:80
  ssh:
   remote_port: 50001 #伺服器分配tcp轉送連接埠,如果不填寫此項則又伺服器分配
   proto:
    tcp: 22 #映射本地的22連接埠
  ssh1: #將由伺服器分配連接埠
    proto:
      tcp: 21

ps:大家可以根據自己的需要修改用戶端設定檔.

用戶端啟動命令:
1、進入到ngrok和ngrok.cfg所在的目錄
2、啟動單個服務 ./ngrok -config ngrok.cfg start www
3、啟動多個服務 ./ngrok -config ngrok.cfg start www web ssh ssh1
4、後台運行可以使用 setsid ./ngrok -config ngrok.cfg start www

好了,大家可以根據自己的需要去配置.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.