nmcli con add type ethernet ifname lte0 con-name lte0 ipv4.method auto ipv6.method disabled ipv4.never-default false
2023-11-29
```bash
#!/bin/sh
# 사용법 표시 함수
usage() {
echo "Usage: $0 -p PORT -f OUTPUT_FILE"
exit 1
}
# 옵션 초기화
PORT=""
OUTPUT_FILE=""
# 옵션 파싱
while getopts "p:f:" opt; do
case $opt in
p)
PORT="$OPTARG"
;;
f)
OUTPUT_FILE="$OPTARG"
;;
\?)
usage
;;
esac
done
# 필수 옵션 확인
if [ -z "$PORT" ] || [ -z "$OUTPUT_FILE" ]; then
usage
fi
# TCP 서버 실행
while true; do
nc -l -p "$PORT" | while read -r line; do
# 현재 시간을 포맷에 맞춰서 가져옴
current_time=$(date "+%Y-%m-%d %H:%M:%S")
# 수신한 패킷과 시간 정보를 출력
echo "$current_time - $line"
# 파일에 저장 (append 모드)
echo "$current_time - $line" >> "$OUTPUT_FILE"
done
done
```
이 스크립트는 무한 루프를 통해 계속해서 클라이언트의 연결을 수락하고, 연결이 끊어지면 다시 대기하여 새로운 연결을 수락합니다. 계속해서 수신된 패킷과 시간 정보를 출력하고 지정된 파일에 저장합니다. 이렇게 하면 `-k` 옵션을 사용할 수 없는 `nc`에서도 동작할 것입니다.
2023-11-28
overlays
env set scan_overlays 'if test -e ${devtype} ${devnum}:${distro_bootpart} /overlays/overlays.txt; then env set fdt_addr ${fdt_addr_r}; if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr} ${fdtfile}; then fdt addr ${fdt_addr}; fdt resize; setexpr fdtovaddr ${fdt_addr} + C0000; if load ${devtype} ${devnum}:${distro_bootpart} ${fdtovaddr} /overlays/overlays.txt && env import -t ${fdtovaddr} ${filesize} && test -n ${overlay}; then echo loaded overlay.txt: ${overlay}; for ov in ${overlay}; do if test "${ov}" = "lan9303_phy" && gpio input GPIOB1; then echo "Skipping load and apply for ${ov} because GPIOD10 is 1"; else echo overlaying ${ov}...; load ${devtype} ${devnum}:${distro_bootpart} ${fdtovaddr} /overlays/${ov}.dtbo && fdt apply ${fdtovaddr}; fi; done; fi; fi; fi;'
2023-11-27
[autopsy] java관련 의존성 설치.
파일시스템 분석툴 설치시 문제.
의존성문제 발생
sudo apt --fix-broken install
의존성 맞게 다운로드하여 설치
sudo dpkg -i sleuthkit-java_4.12.1-1_amd64.deb
잘 설치되었다고 나옴.
끝.
2023-11-22
fallocate
#include <fcntl.h>
#include <unistd.h>
int main() {
// 파일 이름
const std::string filename = "/path/to/file.bin";
// 파일 크기
const int filesize = 256 * 1024 * 1024;
// 파일 핸들
int fd = open(filename, O_CREAT | O_RDWR, 0644);
// 파일의 크기를 지정하여 파일을 생성
fallocate(fd, FALLOC_FL_KEEP_SIZE, 0, filesize);
// 파일 핸들을 닫음
close(fd);
return 0;
}
#include <unistd.h>
int main() {
// 파일 이름
const std::string filename = "/path/to/file.bin";
// 파일 크기
const int filesize = 256 * 1024 * 1024;
// 파일 핸들
int fd = open(filename, O_CREAT | O_RDWR, 0644);
// 파일의 크기를 지정하여 파일을 생성
fallocate(fd, FALLOC_FL_KEEP_SIZE, 0, filesize);
// 파일 핸들을 닫음
close(fd);
return 0;
}
[vscode] tasks.json launch.json
### tasks.json { "version": "2.0.0", "tasks": [ { "label": "checkCrossCompile", "command": "bash", "args": [ "-c", "if [ -n \"$CROSS_COMPILE\" ]; then echo 'true'; else echo 'false'; fi" ], "type": "shell" }, { "label": "setCrossCompileEnv", "dependsOn": ["checkCrossCompile"], "command": "echo 'IS_CROSS_COMPILE=${checkCrossCompile.result}' > .vscode/env.txt", "type": "shell" } ] } ### launch.json { "version": "0.2.0", "configurations": [ { "name": "C++ Launch (x64)", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build_x64/executable", "envFile": "${workspaceFolder}/.vscode/env.txt" }, { "name": "C++ Launch (ARM)", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build_arm/executable", "envFile": "${workspaceFolder}/.vscode/env.txt" } ] }
tasks.json
파일은 checkCrossCompile
작업과 setCrossCompileEnv
작업을 정의합니다. checkCrossCompile
작업은 CROSS_COMPILE
환경 변수가 설정되어 있는지 확인하고, setCrossCompileEnv
작업은 IS_CROSS_COMPILE
변수의 값을 checkCrossCompile
작업의 결과에 따라 설정합니다.
launch.json
파일은 C++ Launch (x64)
및 C++ Launch (ARM)
이라는 두 가지 디버깅 구성을 정의합니다. 두 구성 모두 envFile
속성을 사용하여 .vscode/env.txt
파일에서 환경 변수를 가져옵니다.
이 구성을 사용하면 디버깅 세션을 시작할 때 다음과 같은 일이 발생합니다.
checkCrossCompile
작업이 실행되어CROSS_COMPILE
환경 변수가 설정되어 있는지 확인합니다.CROSS_COMPILE
환경 변수가 설정되어 있으면IS_CROSS_COMPILE
변수가true
로 설정됩니다.CROSS_COMPILE
환경 변수가 설정되어 있지 않으면IS_CROSS_COMPILE
변수가false
로 설정됩니다..vscode/env.txt
파일에IS_CROSS_COMPILE
변수의 값이 기록됩니다.C++ Launch (x64)
또는C++ Launch (ARM)
구성을 사용하여 디버깅 세션을 시작합니다.
디버깅 세션을 시작하면 envFile
속성에 지정된 파일에서 환경 변수를 읽습니다. 이 경우 .vscode/env.txt
파일에서 IS_CROSS_COMPILE
변수의 값을 읽습니다.
따라서 IS_CROSS_COMPILE
환경 변수의 값은 디버깅 세션에 따라 true
또는 false
가 됩니다.
[vscode] arm or x64 launch
// tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "checkCrossCompile",
"command": "bash",
"args": ["-c", "if [ -n \"$CROSS_COMPILE\" ]; then echo 'true'; else echo 'false'; fi"],
"type": "shell",
"options": {
"env": {
"IS_CROSS_COMPILE": "${command:checkCrossCompile}"
}
}
}
]
}
{
"version": "2.0.0",
"tasks": [
{
"label": "checkCrossCompile",
"command": "bash",
"args": ["-c", "if [ -n \"$CROSS_COMPILE\" ]; then echo 'true'; else echo 'false'; fi"],
"type": "shell",
"options": {
"env": {
"IS_CROSS_COMPILE": "${command:checkCrossCompile}"
}
}
}
]
}
// launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (x64)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build_x64/executable",
"env": {
"IS_CROSS_COMPILE": "false"
}
},
{
"name": "C++ Launch (ARM)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build_arm/executable",
"env": {
"IS_CROSS_COMPILE": "true"
}
}
]
}
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (x64)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build_x64/executable",
"env": {
"IS_CROSS_COMPILE": "false"
}
},
{
"name": "C++ Launch (ARM)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build_arm/executable",
"env": {
"IS_CROSS_COMPILE": "true"
}
}
]
}
2023-11-21
yocto devshell menuconfig 을 위해 설치해야할것.
sudo apt install tmux
sudo apt install libncurses-dev
원격이든 컨테이너 attach든, vscode의 콘솔이든
menuconfig과 devshell시 새로 뜨는 창을 현재창에 대신띄워준다.
^^ 맞나?
2023-11-20
100개 생성 스크립트 for docker-compose
#!/bin/bash
# docker-compose.yaml 파일 생성
echo "version: '3'" > docker-compose.yaml
echo "services:" >> docker-compose.yaml
# macvlan 네트워크 설정
echo "networks:" >> docker-compose.yaml
echo " macvlan:" >> docker-compose.yaml
echo " driver: macvlan" >> docker-compose.yaml
echo " driver_opts:" >> docker-compose.yaml
echo " parent: eth0" >> docker-compose.yaml # 호스트에서 사용 중인 네트워크 인터페이스 이름으로 변경
# 1부터 100까지의 컨테이너에 대한 설정을 파일에 추가
for i in {1..100}
do
MAC_ADDRESS=$(printf "12:34:56:78:90:%02x" $i) # MAC 주소 생성
echo " container$i:" >> docker-compose.yaml
echo " image: your_image_name:latest" >> docker-compose.yaml
echo " networks:" >> docker-compose.yaml
echo " - macvlan" >> docker-compose.yaml
echo " mac_address: $MAC_ADDRESS" >> docker-compose.yaml
echo " volumes:" >> docker-compose.yaml
echo " - /path/to/host/directory$i:/path/in/container" >> docker-compose.yaml
done
공유 디랙토리 접근 그룹 설정
리눅스는 본인디렉토리를 벗어나면 여러가지 권한문제가 있음.
그래서 필요한.............
여러 사용자의 기준은 shared라는 그룹을 만들고 그 그룹의 멤버를 의미함.
접근할 그룹을 만들고
sudo groupadd shared_users
사용자를 그룹에 추가하고
sudo usermod -aG shared_users happycpu
소유권을 일반 유저로 바꿔야 한다. 필수.sudo chown -R happycpu:shared_users /srv/shared_directory
다른 유저(그룹에 속하지않은)의 접근을 차단하는 770으로 바꿈.
sudo chmod -R 770 /srv/shared_directory
sudo groupadd shared_users
사용자를 그룹에 추가하고
sudo usermod -aG shared_users happycpu
소유권을 일반 유저로 바꿔야 한다. 필수.sudo chown -R happycpu:shared_users /srv/shared_directory
다른 유저(그룹에 속하지않은)의 접근을 차단하는 770으로 바꿈.
sudo chmod -R 770 /srv/shared_directory
2023-11-17
git 버전 안맞을때.
이러한 메시지는 `git pull` 명령을 실행할 때, 현재의 브랜치와 원격 저장소의 브랜치가 다르게 변경되어 있는 경우 발생합니다. 이러한 상황을 해결하려면 다음 중 하나의 방법을 선택할 수 있습니다.
### 1. 변경사항을 로컬 브랜치에 합치기 (Merge):
```bash
git pull origin <branch-name>
```
여기서 `<branch-name>`은 원격 저장소의 브랜치 이름입니다. 이 명령은 로컬 브랜치를 업데이트하고, 자동으로 로컬 브랜치와 원격 브랜치를 병합합니다.
### 2. 리베이스를 사용하여 변경사항 합치기 (Rebase):
```bash
git pull --rebase origin <branch-name>
```
이 명령은 로컬 브랜치의 변경사항을 커밋 단위로 원격 브랜치에 리베이스합니다. 리베이스를 사용하면 커밋 히스토리가 선형적으로 유지되며, 보다 깔끔한 히스토리를 유지할 수 있습니다.
### 3. 명시적으로 머지 또는 리베이스 설정:
만약에 `git pull` 명령을 실행할 때마다 이러한 선택을 물어보는 것이 번거로우면, 다음과 같이 설정할 수 있습니다.
```bash
# 머지 사용
git config pull.rebase false
# 리베이스 사용
git config pull.rebase true
# fast-forward only 사용
git config pull.ff only
```
위 설정 중 하나를 선택하여 기본 동작을 설정할 수 있습니다. 설정한 이후에는 `git pull` 명령만 사용해도 자동으로 설정한 방식으로 동작합니다.
아래처럼 global 설정을 사용하면 모든 저장소에 대해 동일한 설정이 적용됩니다.
```bash
# 전역 설정에서 머지 사용
git config --global pull.rebase false
# 전역 설정에서 리베이스 사용
git config --global pull.rebase true
# 전역 설정에서 fast-forward only 사용
git config --global pull.ff only
```
이렇게 설정한 후에는 `git pull` 명령만 사용하여 변경사항을 가져올 수 있습니다.
### 1. 변경사항을 로컬 브랜치에 합치기 (Merge):
```bash
git pull origin <branch-name>
```
여기서 `<branch-name>`은 원격 저장소의 브랜치 이름입니다. 이 명령은 로컬 브랜치를 업데이트하고, 자동으로 로컬 브랜치와 원격 브랜치를 병합합니다.
### 2. 리베이스를 사용하여 변경사항 합치기 (Rebase):
```bash
git pull --rebase origin <branch-name>
```
이 명령은 로컬 브랜치의 변경사항을 커밋 단위로 원격 브랜치에 리베이스합니다. 리베이스를 사용하면 커밋 히스토리가 선형적으로 유지되며, 보다 깔끔한 히스토리를 유지할 수 있습니다.
### 3. 명시적으로 머지 또는 리베이스 설정:
만약에 `git pull` 명령을 실행할 때마다 이러한 선택을 물어보는 것이 번거로우면, 다음과 같이 설정할 수 있습니다.
```bash
# 머지 사용
git config pull.rebase false
# 리베이스 사용
git config pull.rebase true
# fast-forward only 사용
git config pull.ff only
```
위 설정 중 하나를 선택하여 기본 동작을 설정할 수 있습니다. 설정한 이후에는 `git pull` 명령만 사용해도 자동으로 설정한 방식으로 동작합니다.
아래처럼 global 설정을 사용하면 모든 저장소에 대해 동일한 설정이 적용됩니다.
```bash
# 전역 설정에서 머지 사용
git config --global pull.rebase false
# 전역 설정에서 리베이스 사용
git config --global pull.rebase true
# 전역 설정에서 fast-forward only 사용
git config --global pull.ff only
```
이렇게 설정한 후에는 `git pull` 명령만 사용하여 변경사항을 가져올 수 있습니다.
피드 구독하기:
글 (Atom)
구글드라이브 wget 다운받는 명령어
구글드라이브의 파일을 링크가있는사람 무조건받기로 해서 공유링크를 복사하여 아래의 "구글드라이브공유링크"에 붙여넣는다. 원하는파일명은적절히 써준다. 주의: 실행속성은 추가로 변경해주어야한다. chmod a+x 파일명 GDRIVE_LI...
-
apt remove로 지웠다간, 크롬 firefox snapd등이 실행이안됨. 그래서 프로젝트 컴파일할때만 사용한다. 1. 빌드해야하므로 관련 프로그램 설치 sudo apt install -y build-essential checkinstall zli...
-
필요한사람. chagpt를 너무너무 많이 쓰는중에. 한글과 영어를 번갈아가며쓰는데, 한글다음 이응'ㅇ' 이나 'ㄹ' 을 빠르게 칠경우, 크롬의 주소창으로 이동되버리거나, 메뉴항목이 활성화되어, 내가 친 질문조합이 크롬을 종...