#/bin/bash -e
set -e #이렇게도 줄수있다.
- 스크립트 내의 명령어 중 하나라도 실패할 경우 즉시 종료
set -x
#스크립트 내용들...
set -e
- set -x 로 명령어 실행 과정을 출력하고(디버그모드)
- set +x 종료
homeDir=$(realpath "$(dirname "$0")")
LOG_FILE="${homeDir}/logs/log_$(date +%Y%m%d).log"
function log(){
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
- 위와 같이 병행해서 로그 파일을 생성하고 로깅 남기기
function successOrFail() {
if [[ $1 != 0 ]]; then
echo "실패"
exit 1
else
echo "성공"
fi
}
ssh-keygen -R "IP"
ssh-keyscan -t ecdsa-sha2-nistp256 "IP" >> ~/.ssh/known_hosts
DIR="/path/to/directory"
if [[ ! -d "$DIR" ]]; then
mkdir -p "$DIR"
echo "$DIR 디렉터리가 생성되었습니다."
else
echo "$DIR 디렉터리가 이미 존재합니다."
fi
- 스크립트 실행 시 특정 디렉터리가 없으면 자동으로 생성
START=$(date +%s)
#스크립트 내용들...
END=$(date +%s)
DIFF=$(( END - START ))
echo "명령어 실행에 걸린 시간: $DIFF 초"
PORT=8080
if ! lsof -i:$PORT >/dev/null; then
echo "$PORT 포트는 사용 가능합니다."
# 사용할 명령어 실행
else
echo "$PORT 포트는 이미 사용 중입니다."
exit 1
fi
function ssh_command(){
local IP=$1
local COMMAND=$2
ssh "$IP" "echo "비밀번호" | sudo -S $COMMAND"
}
ssh_command "IP" "hostname euiyeob"
cat <<EOF > myfile.txt
This is line 1
This is line 2
EOF
mysql -u root -p <<EOF
CREATE DATABASE mydatabase;
USE mydatabase;
CREATE TABLE mytable (id INT, name VARCHAR(50));
EOF
- 다양한 명령어를 한번에 실행 가능
- ssh 원격접속해서 다양한 명령어를 EOF(end of file)을 통해 명령 가능
- query도 EOF를 통해서 여러문장을 실행 가능
spawn ssh USER@IP
expect "password:"
send "mypassword\r"
puts "write password successfully"
interact
command1 &
command2 &
wait
- & 백그라운드 프로세스로 실행(즉 command1, command2 병렬처리)
- wait으로 프로세스 백그라운드 프로세스 끝나기를 기다리기
nc -zv 192.168.1.1 22
- netcat(nc)를 사용하여 네트워크 포트가 열려 있는지 확인
#!/bin/bash
PS3='Please enter your choice (1-4): '
options=("1" "2" "3" "Quit")
select opt in "${options[@]}"
do
case $REPLY in
1) echo "You chose 1";;
2) echo "You chose 2";;
3) echo "You chose 3";;
4) echo "Exiting. Goodbye!"; break;;
*) echo "Invalid option. Please try again.";;
esac
done
- 사용자가 번호를 입력하면 해당 옵션에 대한 메시지를 출력
variable=${1:-default_value}
echo ${variable}
- 첫 번째 인자 $1가 설정되어 있지 않으면 variable에 default_value를 할당