지나가는 일상이지만... 잠깐 여유를 가지고 주위를 돌아보면 호주가 정말 아름답다는 생각을 않할 수 가 없다.... 항상보는 캥거루지만 그래도 아름답다. 특히...아침일찍 골프장 구석구석 감싸고 도는 안개를 보거나 저녁에 노을지는 모습은 정말 아름답다.


동네서 가장 까운 골프코스 : http://www.yarrambatgolf.com.au/  | 649 Yan Yean Road, Yarrambat VIC 3091


이곳은 캥구들과 눈을 마주치면 캥거루가 나를 향해 "여기는 무슨일로 오였소?"라고 묻는것 같다....

내가 이방인이란것을 잘 알고 있는것 처럼 말이다....


그나마 위안이라면 골프장 잔듸밭과 커다란 검트리 아래서, 아니면 늦은 저녁 뒤마당에서 언제나 수 없는 별을 보면서 담배연기와 함께 답답함을 허공으로 날려보내는것이라고 할까....





' Life of Aussie > Diary' 카테고리의 다른 글

베드버그  (0) 2014.05.15
무서운 벌금....  (0) 2013.02.20
무엇인가 정리하면서 살아야 하지 않을까?  (0) 2013.02.01
Posted by Steven J.S Min
,

CURL의 사용법

DevOps 2016. 2. 21. 09:38

wget처럼 curl 툴도 다양한 기능을 제공하는데 최근에는 wget보다 널리 쓰이고 더 유용한 기능을 제공하는 것같아 정리해본다.


wget의 은 JDK를 다운로드 받기위해 정리해놓은 문서를 참조 : http://story.cosmossoftwareresearchers.com/search/wget 


사용예(Example, Sample)

HTTP/HTTPS Download

HTTP로 다운로드

다운로드 받은 파일을 콘솔로 출력
curl http://www.gnu.org/software/bash/manual/html_node/index.html
지정한 이름으로 저장
curl -o index.html http://www.gnu.org/software/bash/manual/html_node/index.html
서버의 filename 으로 저장
curl -O  http://www.gnu.org/software/bash/manual/html_node/index.html
여러 url 에서 동시에 다운로드
curl -O  http://www.gnu.org/software/bash/manual/html_node/index.html -O http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.13/iconv.1.html

이어받기

-C/--continue-at  <offset> 옵션을 주면 이어받기 가능(offset 에 - 를 주면 전송이후 부분부터 이어받음)

이어 받기
curl -C - -O  http://www.gnu.org/software/bash/manual/html_node/index.html

특정일 이전/이후 변경되었으면 받기

 -z/--time-cond <time>

HTTP 헤더에 If-Modified-Since: 헤더를 추가하여 특정일 이후에 변경되었으면 다운로드 수행

아래 예제는 2011년 12월 21일 이후에 변경되었으면 다운로드 수행

curl -z 21-Dec-11 http://www.example.com/yy.html

날자앞에 - 를 추가하면 If-Unmodified-Since: 헤더를 추가하여 특정일 이전에 변경되었으면 다운로드 수행

아래 예제는 2011년 12월 21일 이전에 변경되었으면 다운로드함 (날자에 - 추가)

curl -z -21-Dec-11 http://www.example.com/yy.html

http response code 만 출력

HTTP Header 나 contents 는 빼고 HTTP Response code 만 출력한다. 서버의 정상 작동 여부 점검때 유용하다.

curl -s -o /dev/null -w "%{http_code}\n" http://www.example.com/yy.html

HTTP 인증

id/pwd 가 필요한 사이트의 경우 -u(–user) 옵션 뒤에 userid:password 를 지정하여 인증할 수 있다.

curl -v -u userid:password http://www.example.com/user.html

결과값에 HTTP Header 포함

-i 옵션을 사용하면 서버의 응답에 서버가 보낸 HTTP 헤더를 추가하여 출력한다. 디버깅에 유용한다.

curl -i https://api.github.com -u valid_username:valid_password

 

HTTP/HTTPS POST

HTTP FORM POST 

-X POST 옵션을 추가하거나 -d( --data) 옵션을 지정하면 기본값으로 POST 로 설정됨

FORM 파일
<form method="POST" action="post.php">
    <input type=text name="first_name">
    <input type=text name="last_name">
    <input type=submit name=press value=" OK ">
 </form>

POST 데이타는 "param1=value1&param2=value2" 형식으로 전달

curl -d "first_name=Bruce&last_name=Wayne&press=%20OK%20" http://posttestserver.com/post.php

 

데이타에 공백이나 기타 특수 문자가 있을 경우 URL encoding 을 해야 한다.

공백일 경우 일일이 + 로 변환해서 전송해야 하지만 최신 버전의 curl(7.18.0 이후) 은 FORM 파라미터를 URL Encoding 해주는 --data-urlencode 옵션을 사용하면 별도로 인코딩을 해주지 않아도 된다.

curl --data-urlencode "first_name=Bruce" --data-urlencode "last_name=Wayne" --data-urlencode "press= OK " http://posttestserver.com/post.php

Hidden field 전송시 일반 필드처럼 name=value 형식으로 전송하면 된다.

 

HTTP POST File

file POST할 경우 file name 앞에 @ 를 붙여줌 

curl -d @myPostfile http://posttestserver.com/post.php

HTTP POST Binary File

curl 은 POST 시 데이타를 text 로 취급하므로 binary 데이타는 깨질 수 있다. 제대로 전송하려면 --data-binary 옵션을 추가해야 한다.

curl --data-binary @myBinary.jpg http://posttestserver.com/post.php

HTTP File Upload Form

다음과 같은 파일 업로드 FORM 이 있을때

<form method="POST" enctype='multipart/form-data' action="upload.php">
 <input type=file name=upload>
 <input type=submit name=press value="OK">
</form>

localfilename 은 upload 할 파일명, submit 은 press=OK

curl --form upload=@localfilename --form press=OK http://localhost/upload.php

 

HTTP Header 설정

특정한 HTTP Header 를 설정해서 보내야 할 경우(Ex: json data등) -H (–header) 옵션으로 헤더를 설정할 수 있다.

Content-Type Header 설정

curl -d @myJson.js -H "Content-Type: application/json" http://localhost:8080/jsonEcho

User-Agent 설정

특정 브라우저인(Browser) 것처럼 동작하기 위해서는 -A ( --user-agent) 옵션을 사용할 수 있다. (http://www.useragentstring.com/)

 

USER-AGENT CHROME 24.0
Chrome 24.0 으로 User-Agent 설정
curl -d @myJson.js -H "Content-Type: application/json" --user-agent "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.14 (KHTML, like Gecko) Chrome/24.0.1292.0 Safari/537.14" http://localhost:8080/jsonEcho
USER-AGENT MSIE(INTERNET EXPLORER) 10.0
IE 10.0
curl -d @myJson.js -H "Content-Type: application/json" --user-agent "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" http://localhost:8080/jsonEcho

 

USER-AGENT FIREFOX 29.0
Firefox 29.0
curl -d @myJson.js -H "Content-Type: application/json" --user-agent "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20120101 Firefox/29.0" http://localhost:8080/jsonEcho

Referer 설정

Referer 를 체크하는 사이트일 경우 -e (–referer) 옵션으로 Referer URL 을 설정할 수 있다.

curl --referer http://www.example.come/from  http://www.example.com/to

아니면 -H 옵션으로 referer 헤더를 지정해도 된다.

SSL/TLS 옵션

TLS Version 지정

SSL 의 후속 버전인 TLS 의 버전을 지정할 수 있다.  지정하지 않을 경우 서버와 negotiation하여 결정한다.

  • -1, --tlsv1     Use => TLSv1 (SSL)
  • --tlsv1.0       Use TLSv1.0 (SSL)
  • --tlsv1.1       Use TLSv1.1 (SSL)
  • --tlsv1.2       Use TLSv1.2 (SSL)
curl --tlsv1.2 https://www.example.come

SSL Version 지정

다음 옵션으로 사용할 SSL 의 버전을 지정할 수 있다. 지정하지 않을 경우 서버와 negotiation하여 결정한다. SSL 은 오래 됐으니 SSL 보다는 TLS 를 사용하는게 좋다.

  • -2, --sslv2         Use SSLv2 (SSL)
  • -3, --sslv3         Use SSLv3 (SSL)
curl --sslv3 https://www.example.come

REST API 와 연계

위의 옵션들이 익숙해졌으면 REST 기반의 웹서비스를 개발할 때 curl 을 이용해서 테스트 및 디버깅을 수행할 수 있다. REST API 를 제공하는 유명한 Web App 와 연계하는 방법을 정리해 본다.

curl로 Atlassian JIRA REST API 연계하기

 

Sonatype nexus Admin API

관리자 암호 변경

curl -v -k -d "{"data":{"userId":"admin","oldPassword":"admin123","newPassword":"admin1234"}}" -u admin:admin123 https://my-nexus-site/nexus/service/local/users_changepw

 

 

'DevOps' 카테고리의 다른 글

AWS S3를 통한 Static webservice hosting 설정  (0) 2016.08.31
DevOps란 | DevOps 정의  (0) 2016.04.28
DevOps관련 멜번에서의 Hot한 이슈들...  (0) 2016.02.19
GitHub에 Windows SSH key 등록  (0) 2016.02.19
도커(Docker)개념 잡기  (0) 2016.02.18
Posted by Steven J.S Min
,

최근 어떤 재미있는 데비드 루츠라는 친구가 몇년간 밋업을 오가나이징 하면서 각 주제별로 어떤 이슈별로 논의가 있었는지 집계를 낸 재미있는 테이블이 보여서 정리해보았다. (Ref: https://dlutzy.wordpress.com/2016/02/15/infracoders-hot-topics/ )


아래 통계 내용을 보면 어떤쪽으로 최근 엔지니어들이 관심을 갖고있는지 그리고 트랜드가 어떤것인지 눈에 들어오는 것 같다.

뚜렷하게 인프라의 시스템 엔지니어에대한 롤이 데브옵스롤에 의해서 어느정도 흡수되면서 클라우딩 환경과 함께 인프라 오토메이션쪽으로 기우는 현상을 확인 할 수 있다.


2015
categorycount
docker10
metrics/monitoring3
puppet2
cd/ci2
storage2
security2
networking1
cdn1
paas1
sysadmin culture1
windows powershell1
aws1
2014
categorycount
aws4
sysadmin culture3
docker2
metrics/monitoring2
ansible2
puppet1
cd/ci1
support1
coreos1
cloud1
elasticsearch1
terraform1
vagrant1
2013
categorycount
cd/ci6
metrics/monitoring4
sysadmin culture3
aws2
networking2
security1
web architecture1
gradle1
graph database1
elasticsearch1
2012
categorycount
puppet4
automation/orchestration3
sysadmin culture2
cd/ci1
web architecture1
testing1
packaging1
chef1
babushka1
ansible1
hardware hacking/arduino1
windows powershell1


'DevOps' 카테고리의 다른 글

DevOps란 | DevOps 정의  (0) 2016.04.28
CURL의 사용법  (0) 2016.02.21
GitHub에 Windows SSH key 등록  (0) 2016.02.19
도커(Docker)개념 잡기  (0) 2016.02.18
리눅스의 종류와 특징  (0) 2016.01.05
Posted by Steven J.S Min
,

GitHub와 HTTPS를 통해 주고받으면 문제가 없겠지만 SSH 를 이용하면 더 빠르기때문에 SSH키를 GitHub에 공용키를 등록해줘야한다.


아마 이 키를 등록하지 않은 상태에서 GitHub와 통신을 하려고 시도하는 경우 "Permission denied (publickey)."관련 오류가 발생할 것이다. 


보통 유닉스 계열에서는 내장된 ssh-keygen 도구를 이용하여 키를 생성하지만, windows에서는 어디서 어떻게 키를 생성해야 하는지 잘 몰라서 한참 찾아서 정리해놓는다.


우선 git 클라이언트를 설치하게되면 Git 설치디렉토리 하단에 git-bash.exe 파일을 볼수 있다.



git-bash.exe  파일을 실행하면 다른 콘솔이 실행되는데 여기서 ssh-keygen -t rsa를 실행한다.



그리고 이렇게 생선된 키는 C:\Users\[윈도우사용자이름]\.ssh 하단에 id_rsaid_rsa.pub 파일이 각각 개인키 그리고 공용키가  생성되며 이 id_rsa.pub 파일의 내용을 Github ssh key 등록 부분에 등록해주게되면 된다.






추 가

로컬에서 SSH를 통해 git에 접근하려는 경우 git agent는 기본적으로 다음의 파일로 저장된 개인키를 이용하여 접속하려 노력합니다.

    • debug1: Trying private key: /Users/{user}/.ssh/id_rsa
    • debug1: Trying private key: /Users/{user}/.ssh/id_dsa
    • debug1: Trying private key: /Users/{user}/.ssh/id_ecdsa
    • debug1: Trying private key: /Users/{user}/.ssh/id_ed2551


그렇지만, 개인키 파일이 별도로 지정된 이름으로 가지고 있거나, 여러개의 개인키를 유지해야하는 경우 이와 같은 고정된 방법으로 개인키 파일을 유지할 수 없습니다.

결국, git@github.com: Permission denied (publickey) 와 같은 오류를 발생하면서, 접속할 수 없게됩니다.

이러한 경우 개인키를 별도의 방법으로 지정해야하는데, 일반적인 방법은 .ssh/config 파일에


Host github.com

 HostName github.com

 IdentityFile ~/.ssh/개인키파일

 User Github사용자 아이디


와 같이 등록하거나, GIT_SSH_COMMAND 변수를 활용 하면 됩니다.(특정 Git클라이언트 버전 이상에서 지원됨)




'DevOps' 카테고리의 다른 글

CURL의 사용법  (0) 2016.02.21
DevOps관련 멜번에서의 Hot한 이슈들...  (0) 2016.02.19
도커(Docker)개념 잡기  (0) 2016.02.18
리눅스의 종류와 특징  (0) 2016.01.05
Atom 에디터 단축키 정리  (1) 2015.11.16
Posted by Steven J.S Min
,