gnome 터미널 명령어로 한번에 여러개의 창 띄우기

리눅스/OS 일반|2017. 4. 19. 10:57
반응형

큰 컨테이너 안에 여러개의 창을 띄울 수 있음 (탭키 전환, 창분할x)


# /usr/bin/gnome-terminal --load-config=/home/sysdocu/term.cfg



term.cfg 내용


[GNOME Terminal Configuration]

Version=1

CompatVersion=1

Windows=Window0;Window1




[Window0]

MenubarVisible=false

Role=gnome-terminal-window-6355-887453268-1466588933

#ActiveTerminal=Terminal1

Geometry=100x25

Terminals=Terminal1;Terminal2;Terminal3;Terminal4


[Terminal1]

Title=sysdocu_test

WorkingDirectory=/home/sysdocu

Zoom=1


[Terminal2]

Title=sysdocu_test

WorkingDirectory=/home/sysdocu

Zoom=1


[Terminal3]

Title=sysdocu_test

WorkingDirectory=/home/sysdocu

Zoom=1


[Terminal4]

Title=sysdocu_test

WorkingDirectory=/home/sysdocu

Zoom=1




[Window1]

MenubarVisible=false

Role=gnome-terminal-window-6355-887453268-1466588933

#ActiveTerminal=Terminal1

Geometry=100x25

Terminals=Terminal5;Terminal6;Terminal7;Terminal8


[Terminal5]

Title=sysdocu_test

WorkingDirectory=/home/sysdocu

Zoom=1


[Terminal6]

Title=sysdocu_test

WorkingDirectory=/home/sysdocu

Zoom=1


[Terminal7]

Title=sysdocu_test

WorkingDirectory=/home/sysdocu

Zoom=1


[Terminal8]

Title=sysdocu_test

WorkingDirectory=/home/sysdocu

Zoom=1



반응형

댓글()

쉘스크립트 변수에 ! 넣기

리눅스/OS 일반|2017. 3. 31. 09:27
반응형

쉘스크립트 작성 전 명령이 잘 되는지 확인하려는데 아래와 같은 문제를 만났다.


# mysql_root="admin!@#$"

bash: admin!@#$: event not found


이럴때는 " 쌍따옴표를 ' 홑따옴표로 바꿔주면 간단히 해결된다.

# mysql_root='admin!@#$'



반응형

댓글()

쉘스크립트 글자 색상 변경

프로그래밍/BASH SHELL|2017. 3. 27. 16:22
반응형

쉘스크립트에 글자 색상 변경


txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[1;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtrst='\e[0m'    # Text Reset 


쉘스크립트 생성하면서 위 상단에 변수값을 지정한 후 호출하면서 사용하면 됩니다. 



[출처] http://blog.naver.com/theswice/220614922160

반응형

댓글()

특정 파일이 소속된 rpm 패키지 찾기

리눅스/APACHE|2017. 3. 6. 11:20
반응형

특정 파일이 어떤 rpm 패키지에 소속 되어 있는지 찾고 싶을 때

 

예를 들어, df 라는 명령어(파일)가 어떤 패키지에 포함 되어 있는지 알고 싶다면,

 

1. 우선 df의 경로를 알아낸 뒤

[root@localhost ~]# which df
/bin/df

2. rpm -qf 명령으로 해당 파일의 경로를 적어 준다

[root@localhost ~]# rpm -qf /bin/df
coreutils-5.97-34.el5_8.1



[출처] http://faq.hostway.co.kr/Linux_ETC/4416

반응형

댓글()

Ubuntu 16.04 IPTABLES 사용법

리눅스/Network|2017. 2. 14. 08:28
반응형

http://linux-sys-adm.com/ubuntu-16.04-lts-how-to-configure-firewall-iptables-fail2ban/


테스트 환경 : Ubuntu 16.04 LTS

$ sudo apt-get install iptables-persistent
:: ipv4 / ipv6 룰 저장여부


설정파일 저장경로 
$ pwd
/etc/iptables

:: 위에서 저장을 했다면 아래와 같이 현재 Rule 파일로 저장
$ ls -l
합계 8
-rw-r--r-- 1 root root 1353  9월 20 13:27 rules.v4
-rw-r--r-- 1 root root  187  9월 20 13:27 rules.v6


방법1) init 스크립트 작성
$ sudo service iptables-persistent start

:: invoce-rc.d 를 이용해서 서비스 실행
$ sudo  invoke-rc.d netfilter-persistent save
 * Saving netfilter rules...                                                                  
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
                                                                                        [ OK ]

$ sudo service netfilter-persistent stop

:: init 스크립트로 복사 
$ sudo cp /usr/share/netfilter-persistent/plugins.d/15-ip4tables /etc/init.d/iptables
$ sudo /etc/init.d/iptables start
$ sudo /etc/init.d/iptables flush

:: 부팅시 자동으로 서비스 올라오게 등록
$ sudo update-rc.d -f iptables defaults


아래와 같은 에러가 뜨면... 해당스크립트에 LSB tag값이 지정되어있지 않다는 메세지기에 아래 문구삽입
$ sudo  update-rc.d -f iptables defaults
insserv: warning: script 'K01iptables' missing LSB tags and overrides
insserv: warning: script 'iptables' missing LSB tags and overrides


$ sudo vim /etc/init.d/iptables
............................
### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

서비스 활성화 체크리스트
$ sudo service --status-all



방법2) 네트워크 설정파일에 저장된 설정 파일 iptables-restore

$ sudo vim /etc/network/interface
auto eth0
iface eth0 inet static
        address 192.168.22.223
        netmask 255.255.255.0
        gateway 192.168.22.1
        dns-nameserver 115.68.62.210
        pre-up iptables-restore < /etc/iptables/rules.v4



[출처] 모지리닷컴 | 이경현 (http://www.mojily.com/bbs/board.php?bo_table=B19&wr_id=2831&page=0)

반응형

댓글()

쉘 스크립트 if 문 총정리 (우분투 참고용)

프로그래밍/BASH SHELL|2017. 2. 10. 14:42
반응형

스크립트 작성 후 실행권한을 주려면..

Chmod 755 DiskUsageCheck.sh

 

 

쉘 스크립트의 첫번째 라인에는 대부분

#!/bin/sh

라는 문장이 있는데이는 어떤 쉘을 이용하여 이 프로그램을 실행시킬 것인지를 지정하는 것이다스크립트가 실행되면 /bin/sh 프로그램 하에서 실행됨을 의미한다.

 

변수

그냥 변수명을 적으면 된다변수의 타입이나 형을 명시하지 않는다.

변수에 값을 할당하지 않아도 특별한 문제는 발생하지 않으며, NULL로 초기화하고 나중에 값을 할당하려고 한다면 다음과 같이 한다.

name=

 

변수에 값을 할당할 때는 = 기호를 사용하는데 = 사이에 공백을 넣으면 안된다.

name=JUNGJH            # 맞다.

name = JUNGJH          # 틀리다.

만일 입력하려는 이름에 공백이 있다면 다음처럼 한다.

name="JUNG J H"

 

만일 인수로 입력되는 값이 있을 때 이를 변수로 받는 방법은 $숫자 이다, $1은 첫번째 인수이고 $2는 두번째 인수이다.

 

변수의 내용을 출력하려면 echo를 사용한다이때 변수임을 알리기 위해서 $를 넣는다.

echo $name

 

변수에 와일드 문자를 넣어서 사용할 수도 있다.

filename=*.sh

echo $filename   # 확장자가 sh 되어 있는 파일들의 목록이 나온다.

 

변수를 이용하여 스트링의 일부를 변경할 수도 있다예를 들어 option이라는 변수에 l를 입력한 후 ls –“$option 을 사용하면 ls 과 동일한 문장이 된다.

<. ShellTest2.sh>

 

스크립트 파일 내부에서 개발자가 unset 키워드로 변수를 제거할 수 있다.

name="Jung JH"

unset name

newname=$name          # newname=    같다.

 

쉘 스크립트에서도 상수를 만들 수 있다이때 사용되는 키워드는 readonly이다.

readonly만 쓰면 읽기전용으로 된 상수들을 모두 화면에 표시한다.

Name="Jung JH"

Readonly name          #  후로는 값을 바꿀  없다.

 

 

쉘 스크립트에서는 쉘 전체가 사용하는 환경변수도 일반 변수와 똑 같은 방법으로 사용할 수 있다.

 

변수에 값을 할당할 때 입력줄에서 입력받은 내용을 할당하는 방법이 있다스크립트가 실행되는 중간에 변수에 할당할 내용을 사용자로부터 입력받은 후 그 내용을 할당하는 것이다.

이때 사용하는 키워드가 read인데 이 키워드와 변수를 함께 적으면 그 라인이 실행될 때 사용자로부터 입력할 것을 요청하게 된다.

<Grep.sh>

#!/bin/sh

echo "grep 사용될 옵션 입력, -l 또는 -s 입력해주세요."

read option1

echo "검색하고자 하는 문장을 입력해주세요"

read option2

grep $option1 $option2 *

 

쉘에서 사용되는 특정 키워드는 다음과 같다.

$#   - 명령입력 라인에서 입력된 인수의 개수를 가지고 있다.

$*   - 명령입력 라인에서 입력된 전체의 내용을 포함한다, $1 ~ $n을 모두 합친것과 같다.

$$   - 쉘 프로그램이 실행되면서 사용된 프로세스의 ID 값을 가진다.

$!    - 쉘 프로그램이 실행시킨 백그라운드 프로세스의 ID 값을 가진다.

<. shellTest.sh>

위의 키워드를 사용한 다양한 응용을 한다.

 

set 명령어를 이용하면 현재 쉘에서 사용되고 있는 변수들의 리스트를 확인할 수 있다.

<. shellTest4.sh>

쉘의 환경변수를 몇가지 확인한다.

 

쉘에서 변수를 사용할 때 변수에 값을 할당된 경우에는 변수가 가진 값을 사용하고그렇지 않으면 디폴트의 다른값을 활용하는 방법이 있다

더 나아가 지정한 내용을 값이 할당되지 않은 변수속에 할당하는 방법도 있다.

${X:-Y}   # X 값이 있으면 그대로그렇지 않으면 Y 사용, X 변동없음

${X:=Y}   # Y 사용되고   X Y 할당

${X:?에러메시지}  # X 값이 없으면 에러메시지와 함께 종료

<. shellTest4.sh>

위의 예를 활용한다.

 

제어문(조건문)

쉘에서 명령어들을 순차적으로 실행할 때 || 연산자와 && 연산자를 이용하여 연산자 바로 뒤에 위치한 명령어가 조건에 따라 실행되도록 만들 수 있다.

'|| 연산자는 앞의 명령어가 실패했을 때만 뒤에 위치한 프로그램이 실행되도록 한다.

&& 연산자는 반대로 앞의 명령어가 성공적으로 수행되었을 때만 뒤의 프로그램이 실행된다.

 

다음은 명령어 실행이 실패했을 때 이 내용을 로그로 남기는 작업이다.

Run Command1 || echo 첫번째 명령 실행 실패 >> log.txt

Run Command2 || echo 두번째 명령 실행 실패 >> log.txt

또한 다음은 실패가 예상되는 명령에 대한 보완 실행이다.

ShellTest5.sh || chmod 755 ShellTest5.sh && ShellTest5.sh

 

If-else 구문의 형식은 다음과 같다.

if [ conditons ]

then

   실행하고자 하는 문장

fi

 

#########

if [ conditons ]

then

   조건만족시 실행하고자 하는 문장

else

   조건 불만족시 실행하고자 하는 문장

fi

 

##########

if [ conditons ]

then

   조건만족시 실행하고자 하는 문장

elif [ conditons ]

   두번째 조건 만족시 실행 문장

else

   조건 불만족시 실행하고자 하는 문장

fi

 

<. IfTest1.sh>

 

if 조건문에서 사용되는 연산자들에는 다음과 같은 것들이 있다.

 

l         문자열체크

[ stringName ] - 문자열이 (NULL)인지 체크, Null 아니면 

[ -n stringName ] - 문자열의 사이즈가 0 이상인지 체크, 0 이상이면 

[ -z stringName ] - 문자열의 사이즈가 0 인지 체크, 0이면 

[ stringNameA = stringNameB ] - A문자열과 B문자열이 같은지 체크같으면 

[ stringNameA != stringNameB ] - A문자열과 B문자열이 다른지 체크다르면 

 

l         숫자 대소 관계 체크

[ intA -ge 100 ] - 숫자 A 100보다 크거나 같은지 체크, 100 이상이면 

[ intA -gt 100 ] - 숫자 A 100보다 큰지 체크, 100 넘으면 

[ intA -le 100 ] - 숫자 A 100보다 작거나 같은지 체크, 100 이하이면 

[ intA -lt 100 ] - 숫자 A 100보자 작은지 체크, 100 미만이면 

 

l         파일 체크

[ -r filename ] - 해당 파일이 읽기 가능한지 체크

[ -w filename ] - 해당 파일이 쓰기 가능한지 체크

[ -x filename ] - 해당 파일이 실행 가능한지 체크

[ -s filename ] - 해당 파일의 사이즈가 제로 이상인지 체크

[ -d filename ] - 해당 파일이 디렉토리 파일인지 체크

[ -f filename ] - 해당 파일이 보통 파일인지 체크

[ -h filename ] - 해당 파일이 링크 파일인지 체크

 

l         조건문의 결합

조건문A -a 조건문B ] - 조건문 A B 모두 참인지 체크, -a AND

조건문A -o 조건문B ] - 조건문 A B 참이 하나라도 있는지 체크, -o OR

 

<. IfTest2.sh>

 

case문도 제공을 하는데 형식은 다음과 같다.

case $변수명 in

문장1)

       첫번째 명령어;;

문장2)

       두번째 명령어;;

문장3)

       세번째 명령어;;

*)

       Default 명령어;;

esac

 

<. caseTest.sh>

 

 

제어문(반복문)

while문의 형식은 다음과 같다.

while [ 조건 ]

do

명령어 구문

done

 

<. whileTest.sh>

#!/bin/sh

while [ $# -gt 0 ]

   echo "< $1 명령 실행 > "

   $1

   Shift

done

 

위의 예제에서 shift 명령어를 사용하는데. Shift는 인수로 들어온 내용을 하나씩 옮겨가는 기능을 한다, shift가 한번 실행되면 $1$2이 되고 $2 $3이 된다.(???)

 

until 구문과 비교해보라..

#!/bin/sh

until [ $# -le 0 ]

   echo "< $1 명령 실행 > "

   $1

   Shift

done

 

for 구문의 형식은 다음과 같다.

for 변수명 in value1 value2 ...

do

   반복 실행 문장

done

 

while/until 에서 사용한 예제를 for로 변경하면 다음과 같다.

#!/bin/sh

for variable in $*                     # $* : 인수로 들어온 모든 문자열

do

       echo < $variable 명령 실행>

       $variable

done

 

for 키워드 뒤에 변수명(variable)이 오고 in 키워드 뒤에 값들이 나열된다이것은 in 뒤에 있는 값이 하나씩 variable에 할당이 되면서 값의 할당이 끝날때까지 do~done를 반복한다.

<. breakContinue.sh>

 

<. runCmd>

여러 개의 쉘 명령어를 한꺼번에 실행하도록 만들어 주는 예제

쉘 명령어가 옵션이 있는지 여부를 체크하고옵션이 있으면 옵션과함께 명령어를 실행하고 옵션이 없으면 명령어만 실행하는데이를 위해 while문과 다중 if, case문을 사용한다.

 

 

함수 작성

함수를 사용하려면 스크립트의 시작부에 정의가 되어 있어야 한다.

함수의 형식은 다음과 같다.

함수명()

{

       함수 내용

}

 

함수 호출은 인자가 없는 함수는 함수명만 호출하면 되고인자가 있는 함수는 함수명 뒤에 인자를 나열해주면 된다.( 괄호는 쓰지 않는다.)

함수 내부에서 넘겨받은 인자를 쓰는 방법은 쉘 프로그램이 인자를 쓰는 방법과 같다.($1, $2, )



[출처] http://blog.naver.com/woorara7/20012188236

반응형

댓글()

원격에서 서버 리부팅하기

윈도우즈/OS 일반|2017. 1. 19. 13:23
반응형

명령프롬프트에서 아래 명령어를 이용해 리부팅을 할 수 있습니다.



1. 접근 권한


우선 아래 명령을 이용하여 원격지 IP 에 대해 접근권한을 얻어냅니다.

(명령 실행 후 사용자 이름과 패스워드를 입력해야 함)


net use \\192.168.10.2



2. 리부팅


리부팅합니다.

shutdown -r -f -t 0 -m \\192.168.10.2


-r 는 리부팅 (-s 는 셧다운)

-f 는 프로그램 종료 기다리지 말고 강제 종료하는것이며

-t 는 딜레이 시간(초)


반응형

댓글()

APACHE 2.4 + PHP 5.5 + MYSQL 5.6 설치

리눅스/APACHE|2017. 1. 2. 11:07
반응형

설치 버전

  • apache-2.4.xx
  • php-5.5.xx
  • mysql-5.6.xx

MySQL 설치

Note : MySQL 소스컴파일 설치하는 과정에 대한 내용이며, 설치 버전은 mysql-5.6의 가장 최신 버전을 사용한다.

mysql user 생성

소스코드 다운로드
Download

다운받은 소스 파일 압축 해제

필요한 패키지 설치

Note : 설치에 앞서 필요한 패키지를 다운로드 한다.

설치

설정파일 복사

시작 스크립트 복사

Note : 부팅시 자동으로 시작 할 수 있게 하기 위해 init 스크립트를 /etc/rc.d/init.d/로 복사한다.

기본 데이터베이스 생성

데이터베이스 구동

root 패스워드 설정

OR


Apache 설치

Note : 다음은 Apache 소스컴파일 과정이며, 설치 버전은 apache-2.4의 가장 최신 버전을 사용한다.

필요한 패키지 설치

Note : 설치 패키지 내용은 시스템 환경 마다 다소 차이가 있을 수 있다.

apache 소스 압축 해제

아파치 소스에 apr 추가

Note : apr 소스 복사 기존 httpd-2.2 소스에는 aprapr-util 이 포함되 어있었는데 2.4 버전에서 부터는 포함이 되어 있지 않아 수동으로 포함 시켜줘야 하는 번거로움이 있다.

컴파일

시작 스크립트 복사

구동 스크립트 복사후 아래 내용 추가

/etc/rc.d/init.d/httpd 파일의 최상단에 다음내용을 추가.

서비스 등록


PHP 설치

Note : 다음 내용은 PHP 소스컴파일 과정에 대한 내용이며, 설치 버전은 php-5.5의 가장 최신버전을 사용한다.

소스파일 압축 해제

필요한 패키지 설치

컴파일

Note : 컴파일 옵션은 그닥 별다른 사항은 없으나, mysql 연동하는 부분에서 mysqlnd를 사용했다.
mysqlnd를 사용한 이유는 기존 php mysql 연동시 mysql client library를 통해 연동을 했으나 mysql client library를 설치 하지 않아도 mysql 연동이 가능하고, php확장 모듈로 만들어졌기 때문에 php동작과 긴밀하게 연결되어 있어 메모리 관리 측면에서 효율적이다. 또한 mysqlnd는 여러기능의 플러그인을 지원한다.
mysqlnd에 대한 자세한 내용은 http://php.net/manual/kr/intro.mysqlnd.php에서 확인 가능하다.

환경설정 파일 복사

아파치 환경 설정

httpd.conf 파일에 다음 내용 추가 및 수정

연동 확인
/usr/local/apache/htdocs/info.php 파일을 만들어 아래 내용을 삽입 후 저장.

웹브라우져에서 http://ip-address/info.php 호출해 php information 페이지가 잘 출력되면 성공적으로 설치된 것이다.



[출처] https://blog.onlab.kr/2016/07/29/apache-2-4-php-5-5-mysql-5-6-%EC%84%A4%EC%B9%98/

반응형

댓글()

지연 실행 (delay 그리고 재호출시 연기하기)

프로그래밍/Android (Java)|2016. 12. 14. 09:53
반응형

import android.os.Handler;



public class TVActivity extends Activity { 여기 안에다가 아래 내용을 미리 선언합니다.


    Runnable myRunnable = new Runnable() {

        @Override

        public void run() {

            final ImageView imgNumber = (ImageView) findViewById(R.id.getImage);

            imgNumber.setVisibility(View.GONE);

        }

    };

    Handler myHandler = new Handler();



나중에 클릭리스너나 키이벤트에 아래 내용 추가해서 불러오면 됩니다.


    myHandler.removeCallbacks(myRunnable);       // 반복해서 누를경우 기존 딜레이 취소

    myHandler.postDelayed(myRunnable, 5000);    // 딜레이 호출 (5초뒤 실행)



혹시 안될경우 {, } 밖으로 또는 안으로 이동하며 테스트 해볼것. 위치가 중요합니다.


반응형

댓글()

[OpenVAS] CentOS 7 에서 pdf 리포트가 0 byte 로 생성될 경우

리눅스/Security|2016. 12. 12. 16:02
반응형

# yum -y install texlive-changepage texlive-titlesec


# mkdir -p /usr/share/texlive/texmf-local/tex/latex/comment


# cd /usr/share/texlive/texmf-local/tex/latex/comment


# wget http://mirrors.ctan.org/macros/latex/contrib/comment/comment.sty 


# chmod 644 comment.sty


# texhash



[출처] http://miotramemoria.blogspot.jp/2014/08/centos-7-openvas-pdf-reports.html



잘 안되면 그냥 yum install texlive* textlive-* 로 전부 설치해버립니다. (경험)

반응형

댓글()

[OpenVAS] WARNING: Cannot connect to KB at '/tmp/redis.sock': Connection refused'

리눅스/Security|2016. 12. 12. 13:50
반응형

9392 포트로 접속하여 스캐닝 실행시 에러 출력이 아래와 같다면..


Install OpenVAS 7 On CentOS 7 – Run Vulnerability Assessments and Pen Tests



[root@localhost bin]# yum -y install redis


[root@localhost bin]# echo "unixsocket /tmp/redis.sock" >> /etc/redis.conf


[root@localhost bin]# sed -i 's/enforcing/disabled/g' /etc/selinux/config /etc/selinux/config


[root@localhost bin]# systemctl enable redis.service


Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.


[root@localhost bin]# reboot



[출처] Install OpenVAS 7 On CentOS 7 – Run Vulnerability Assessments and Pen Tests

반응형

댓글()