.lua
파일에서 bash 스크립트를 실행 해야 합니다 .
os.execute ("/path/to/file.sh")
파일.sh:
#!/bin/bash
route add 149.36.98.78 reject
file.sh의 권한은 다음과 같습니다.[-rwxr-x---] root www-data
"Arg list too long" 오류가 발생하고 bash 코드를 lua에 직접 넣으면 동일한 오류가 발생합니다.
os.execute ("route add 149.36.98.78 reject")
따라서 전체 bash 코드가 따옴표 내에서 실행되기 때문이라고 생각합니다. 참조:https://stackoverflow.com/q/11475221/10286151
내 Limit.h의 상수는 다음과 같습니다.
#ifndef _LINUX_LIMITS_H
#define _LINUX_LIMITS_H
#define NR_OPEN 1024
#define NGROUPS_MAX 65536 /* supplemental group IDs are available */
#define ARG_MAX 131072 /* # bytes of args + environ for exec() */
#define LINK_MAX 127 /* # links a file may have */
#define MAX_CANON 255 /* size of the canonical input queue */
#define MAX_INPUT 255 /* size of the type-ahead buffer */
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */
#define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */
#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */
#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */
#define RTSIG_MAX 32
#endif
어떻게 해결할 수 있나요? 나는 그것을 ARG_MAX
다음과 같이 변경하려고 시도했습니다.
ARG_MAX 29107299
그러나 그것은 아무것도 바꾸지 않습니다. 우분투 16을 사용합니다.
이 문제를 검색했을 때 문제가 로 인해 발생했다는 것을 깨달았습니다. 파일이 ARG_MAX
정의되어 있지만 파일에 있기 때문에 확실하지 않지만 이 작업을 수행하면 다음과 같은 결과가 나타 납니다.ARG_MAX
/usr/include/linux/limits.h
limits.h
ARG_MAX
131072
getconf ARG_MAX
2621440
답변1
이것오류 목록당신은 이미 인용했습니다네 붙여넣기 상자당신을 오해하고 있습니다.
나타나는 오류는 숫자 7이지만 이는 프로그램 종료 코드이며 시스템 오류 코드가 아닌 것이 거의 확실합니다. 그들은 전혀 관련이 없습니다.
실제 문제는 간단하다고 생각합니다. 동일한 거부 경로를 두 번 추가하려고 합니다.
# route add 152.48.25.29 reject; echo SS=$?
SS=0
# route add 152.48.25.29 reject; echo SS=$?
SIOCADDRT: File exists
SS=7
route
존재하지 않는 경로를 삭제하려고 하면 동일한 종료 코드도 받게 됩니다.
# route delete 152.48.25.29 reject; echo SS=$?
SS=0
# route delete 152.48.25.29 reject; echo SS=$?
SIOCDELRT: No such process
SS=7
이 문제를 해결하려면 래퍼를 관리해야 합니다. 거부 경로를 추가하기 전에 이를 테스트하거나 단순히 오류 반환을 삭제할 수 있습니다. 이 예는 두 번째(간단한) 접근 방식을 지원하지만 다른 옵션을 선택할 수도 있습니다.
#!/bin/bash
route add 152.48.25.29 reject 2>/dev/null
exit 0
"$1"
( 당신은 IP 주소를 그대로 삽입하는 대신 스크립트에 매개 변수를 전달하고 인용하는 방법을 알고 있습니까 ?)