# Simple script for mining maintenance (in Korean)

**URL:** <https://community.creditcoin.org/t/simple-script-for-mining-maintenance-in-korean/52>\
**Category:** Mining\
**Created:** [October 9, 2020, 8:44am UTC](https://community.creditcoin.org/t/simple-script-for-mining-maintenance-in-korean/52 "2020-10-09T08:44:42Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![sword](https://avatars.discourse-cdn.com/v4/letter/s/bbe5ce/32.png) [@sword](https://community.creditcoin.org/u/sword)\
**Post date:** [October 12, 2020, 2:45am UTC](https://community.creditcoin.org/t/simple-script-for-mining-maintenance-in-korean/52/3 "2020-10-12T02:45:59Z")

</div>

```
#!/bin/bash
# creditcoin command selection

until ["$opt" = "0"] 
do
	CurBlkNum=0
	PreBlkNum=0

	echo "=================================================="
	echo "1. 서버 및 클라이언트 실행" 
	echo "2. docker container 상태 확인"
	echo "3. 내 서버원장의 블록높이 확인" 
	echo "4. 블록높이 감시 (1시간 동일 시 재기동)"
	echo "5. 내가 캔 블록확인 (종료시 Ctrl+C)" 
	echo "6. validator 디버그 메시지 확인 (종료시 Ctrl+C)"
	echo "7. peer 확인 (종료시 Ctrl+C)"
	echo "8. 서버 및 클라이언트 종료" 
	echo "0. 스크립트 종료"
	echo "--------------------------------------------------"
	printf "원하는 기능의 번호를 선택 후 엔터를 입력하세요 : "

	read opt

	echo "=================================================="

	case $opt in 
		1)
			echo "서버 및 클라이언트 도커 컨테이너를 실행합니다..."
			docker-compose -f ./Server/creditcoin-with-gateway.yaml up -d
			sleep 1
			docker-compose -f ./Client/creditcoin-client.yaml up -d
			sleep 1
			;;
		2)
			echo "docker container 상태는 아래와 같습니다..."
			docker container ls 
			;;
		3)
			echo "현재 서버 원장의 블록높이는 아래와 같습니다..."
			docker exec -it creditcoin-client ./ccclient tip
			;;
		4)
			while true
			do
				CurBlkNum=$(docker exec -it creditcoin-client ./ccclient tip | awk '/^[0-9]/{print int($0)}')

				if ["$PreBlkNum" -eq 0]
				then 
					echo "$(date "+%Y-%m-%d %H:%M:%S") | 현재 블록높이는 $CurBlkNum입니다."
				elif ["$PreBlkNum" -eq "$CurBlkNum"]
				then
					echo "$(date "+%Y-%m-%d %H:%M:%S") | 현재 블록높이가 1시간 전과 같아 서버를 재기동합니다..."
					docker-compose -f ./Client/creditcoin-client.yaml down 			
					sleep 1
					docker-compose -f ./Server/creditcoin-with-gateway.yaml down
					sleep 1
					docker-compose -f ./Server/creditcoin-with-gateway.yaml up -d
					sleep 1
					docker-compose -f ./Client/creditcoin-client.yaml up -d
					sleep 1
				else 
					echo "$(date "+%Y-%m-%d %H:%M:%S") | 1시간 전 블록높이는 $PreBlkNum이고 현재 블록높이는 $CurBlkNum입니다."
				fi

				PreBlkNum=$CurBlkNum
				sleep 3600
			done
			;;
		5)
			echo "현재까지 채굴한 블록번호와 공개키는 아래와 같습니다..."
			pub=$(docker exec -it sawtooth-validator-default sh -c "cat /etc/sawtooth/keys/validator.pub")
			docker exec -it sawtooth-validator-default bash -c "sawtooth block list --url http://rest-api:8008 -F csv" | grep $pub | awk -F, 'BEGIN{printf("BLKNUM	SIGNER\n")} {printf("%s\t%s\n", $1, $5)}'
			;;
		6)
			docker exec sawtooth-validator-default tail -f /var/log/sawtooth/validator-debug.log
			;;
		7) 
			while true
			do
				timestamp() {
				  ts=`date +"%Y-%m-%d %H:%M:%S"`
				  echo -n $ts
				}
				REST_API_ENDPOINT=localhost:8008
				peers=`curl http://$REST_API_ENDPOINT/peers 2>/dev/null | grep tcp:// | cut -d \" -f2 | sed 's/^.*\///'`
				# For dynamic peering, need to log nc probe results to view history of connected peers over time.
				for p in $peers; do
				  ipv4_address=`echo $p | cut -d: -f1`
				  port=`echo $p | cut -d: -f2`
				  timestamp
				  preamble=" Peer $ipv4_address:$port is"
				  if nc -z $ipv4_address $port
				  then
				    echo "$preamble open"
				  else
				    echo "$preamble closed"
				  fi
				done
			sleep 60
			done | tee -a ctcpeer.result
			;;
		8)
			echo "서버 및 클라이언트 도커 컨테이너를 종료합니다..."
			docker-compose -f ./Client/creditcoin-client.yaml down 			
			sleep 1
			docker-compose -f ./Server/creditcoin-with-gateway.yaml down
			sleep 1
			;;
		0)
			break
			;;
		*)
			echo "실행할 수 없는 옵션입니다"
			;;
	esac
	echo ""
done
```

---

_[View the full topic](https://community.creditcoin.org/t/simple-script-for-mining-maintenance-in-korean/52)._
