systemd 장치에서 Expect를 실행하면 sh 구문 오류가 발생합니다.

systemd 장치에서 Expect를 실행하면 sh 구문 오류가 발생합니다.

systemdexpectVPN 클라이언트에 로그인 자격 증명을 제공하는 스크립트를 호출하는 셀을 사용하여 Linux 컴퓨터에서 VPN(SonicWall NetExtender)에 연결하는 프로세스를 자동화 하려고 합니다 . 파일은 다음과 같습니다.

netextender.service

[Unit]
Description=SonicWall NetExtender VPN
PartOf=systemd-networkd.service systemd-resolved.service

[Service]
Type=simple
EnvironmentFile=/etc/.netExtender
## environment file spec:
# DOMAIN=
# HOSTNAME=
# PASSWORD=
# TOTP_SEED=
# USERNAME=

ExecStartPre=/bin/sh -c '/usr/bin/pkill -9 netExtender || true'
ExecStart=/usr/local/bin/netextender.expect

[Install]
WantedBy=network-online.target

netextender.expect

#!/usr/bin/expect -f

exp_internal 0
set timeout -1
set TOTP_CODE [exec totpgen $env(TOTP_SEED)]
spawn netExtender --dns-only-local --ppp-async --vpntype=wireguard "$env(HOSTNAME)"
expect {
  "*\nUser: " {
    send -- "$env(USERNAME)\n"
    exp_continue
  } "*\nPassword: " {
    send -- "$env(PASSWORD)\n"
    exp_continue
  } "*\nDomain: " {
    send -- "$env(DOMAIN)\n"
    exp_continue
  } "*\nDo you want to proceed? (Y:Yes, N:No, V:View Certificate)" {
    send -- "y\n"
    exp_continue
  } "*\nOne Time Password: " {
    send -- "$TOTP_CODE\n"
  }
}
interact

expect대화형 셸에서 호출하면 스크립트가 VPN 클라이언트를 성공적으로 시작하지만 다음에서 호출하면 다음 오류와 함께 실패합니다 systemd.

sh: -c: line 1: syntax error near unexpected token `('
sh: -c: line 1: `mkdir -p (null)/.netExtenderCerts/PUB_CERT'
spawn_id: spawn id exp3 not open
while executing
interact"
file "/usr/local/bin/netextender.expect" line 24)
netextender.service: Main process exited, code=exited, status=1/FAILURE

일반 바이너리 실행 파일 에 따르면 이것이 왜 sh.systemdfilenetExtender

/usr/bin/netExtender: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5c2daed3c6e1e9f7b7e8ec62f466e6967618c68f, stripped

expect초보자를 위한 작동 방법에 대한 조언이 있나요?

관련 정보