명령 행에서 anyconnect를 사용하여 연결


31

Linux 명령 줄에서 Cisco anyconnect 3.1을 사용하여 서버에 연결하려고합니다. 연결할 수 있지만 한 번에 하나의 매개 변수를 제출해야합니다. 다른 서버에서 실행될 스크립트에서 연결하고 싶습니다. 내가 할 수 있습니까? 같은 것

vpn connect server_add group_name user_name passwd

사용하려는 명령을 알려주십시오. 구분 기호를 사용해 보셨습니까?
Tog

이 명령은 / opt / cisco / anyconnect / bin / vpn connect 10.1.1.1입니다. 그 후에는 사용자 이름, 암호 및 그룹을 연결하고 요청합니다. 내가 원하는 것은이 모든 것을 한 줄에 전달하는 것입니다. 그러나 이것에 대한 문서를 찾을 수 없습니다. 그래픽 인터페이스 클라이언트를 사용하는 중입니다.
Kelly Goedert

답변:


31

다음 /opt/cisco/anyconnect/bin/vpnagentd과 같이 자동으로 실행 중이라고 가정 합니다.

연결 하려면 :

printf 'USERNAME\nPASSWORD\ny' | /opt/cisco/anyconnect/bin/vpn -s connect HOST

교체 USERNAME, PASSWORDHOST. \ny이 나의 호스트에 고유 한 - 말은 로그인 배너를 허용하는 것입니다.

'큰 따옴표 대신 작은 따옴표 를 참고하십시오. "큰 따옴표는 Bash에게 느낌표와 같은 문자열 내의 특정 문자를 Bash history 명령으로 해석하도록 지시하기 때문입니다. 큰 따옴표는 암호에 느낌표가 포함 된 경우 "이벤트를 찾을 수 없음"오류와 함께이 명령이 실패하게합니다. 작은 따옴표로 묶인 문자열은 해석하지 않고 느낌표를 전달합니다.

연결끊으 려면 :

/opt/cisco/anyconnect/bin/vpn disconnect

이것은 AnyConnect v3.1.05160으로 테스트되었습니다.


5
인증서 유효성 검사 오류로 인해 클라이언트가 연결되지 않고 Certificate is from an untrusted source계속 연결하려는 y경우 위의 방법 으로 매개 변수 를 전달 하여 연결 명령이 다음과 같이되도록하십시오 printf "y\nUSERNAME\nPASSWORD\ny" | /opt/cisco/anyconnect/bin/vpn -s connect HOST. 연결을 절대적으로 신뢰하는 경우에만이 작업을 수행하십시오. 그렇지 않으면 중개인이 앉아 스누핑 할 수 있습니다.
shivams

1
아름답게 작동합니다 (내 버전에는 GROUPNAME\nUSERNAME\nPASSWORDy.이 필요합니다 . 비밀번호를 명령과 분리하려면 (쉘 스크립트 또는 도트 파일 키 바인딩 일 수 있음) 다음과 같이하면됩니다.cat ~/.anyconnect_credentials | /opt/cisco/anyconnect/bin/vpn -s connect HOST
Sridhar Sarnobat

@SridharSarnobat 자격 증명에 별도의 파일을 사용하면 작동하지만 다음과 같이 로그에 비밀번호를 인쇄합니다.>> notice: Please respond to banner. MYPASSWORD
Willian Vieira

4

Mac OS X 터미널에서 Cisco AnyConnect를 사용하는 것과 같은 어려움이 발생했습니다. Cisco vpn 명령이 표준 입력에서 입력을 가져 오려면 Cisco vpn 명령을 대화식 모드로 설정하는 -s 옵션을 지정해야합니다. 그런 다음 대화식 모드에서 제공하는 응답을 제공 할 수 있습니다.

제공해야하는 응답은 VPN 서버 관리자가 서버를 구성한 방법에 따라 다릅니다. 저에게 VPN 대화 형 프롬프트는

Group: 
Username: 
Password: 

Blah, blah, blah, ...
accept? :

그래서 내가 실행하는 명령은

$ /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.com <<"EOF"
0
username
password
y
exit
EOF

( EOF 주위의 인용 부호 는 다음 입력에서 명령 / 매개 변수 확장 / 대체를 방지하기위한 것입니다.)

출구 말은 Cisco VPN을 대화 형 모드를 종료하는 것입니다.


2

커맨드 라인을 단순화하고 싶기 때문에 gotowork라는 쉘 스크립트에서 위의 접근 방식을 사용합니다. 위와 같이 개인 PIN과 RSA SecurID 암호로 구성된 그룹, 사용자 이름 및 암호 키를 제공해야합니다. 위의 "수락?"에 대답 할 필요는 없습니다. 의문. RSA 암호를 제외한 모든 것이 스크립트에 있으므로 명령 행은

$ gotowork <RSA passcode>

루트로 실행해야합니다. PIN이 1234라고 가정하십시오. 스크립트 필수 사항 :

# put the interactive answers into a text file
echo -e "0\nusername\n1234$1\n" > /tmp/answers.txt
# find the path to the anyconnect executables
ciscopath="$(dirname $(find /opt/cisco -depth -name vpnagentd))"
# make sure the anyconnect daemon is running
[ $(pidof vpnagentd) ] || $ciscopath/vpnagentd
# connect
$ciscopath/vpn -s < /tmp/answers.txt connect remote.mycompany.com

anyconnect 사용 3.1.05170. 데비안 6, LinuxMint 17에서 테스트


0\n필요한가요? 아니면 회사에만 해당됩니까?
Acumenus

@ABB 그것은 단지 출력 0을 말하고 0, 줄 바꿈 \n, 사용자 이름, 줄 바꿈 \n등을 말합니다 .
Matt Friedman

@ MatFriedman, 나는 그것이 무슨 말인지 알지만 왜 그것이 필요한지 모르겠습니다.
Acumenus

1
@ABB 대화식으로 실행 중이고 연결에서 그룹을 사용하는 경우 가능한 그룹이 열거됩니다. 0"첫 번째 그룹 사용"을 의미합니다.
jmd_dk

2

이것이 OSX El Capitan에서 나를 위해 일한 것입니다. 자리 표시자는 [대괄호]로 묶습니다.

사용하려면

/opt/cisco/anyconnect/bin/vpn -s connect [HOST_ADDRESS] <<"EOF"
[VPN_USERNAME]
[VPN_PASSWORD] 
y
EOF

비활성화하려면

/opt/cisco/anyconnect/bin/vpn disconnect

* 이것이 위의 Peter S.의 답변과 유사하다는 것을 알고 있습니다.


1
이것은 El Capitan을위한 하나의 명령으로 저에게 printf "y\n[GROUP]\n\n[PASSWORD]\ny\n" | /opt/cisco/anyconnect/bin/vpn -s connect HOST
효과적이었습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.