2013-11-03 9 views
0

다음 텍스트에서 "write"라는 단어는 다른 사용자의 tty에 메시지를 쓰는 unix write 명령을 나타냅니다.python으로 서비스에서 사용자에게 알린다

임의의 사용자에게 알릴 필요가있는 서비스가 inetd에서 실행 중이지만 문제가되지 않습니다. 지금까지 서브 프로세스로 write 명령을 호출하려고 시도했습니다. 그러나 그것은 항상 작동하고 일부 시스템에 오류 메시지 등을 초래하지 않습니다. (서비스가 nobody로 실행되고 있음을 유의하시기 바랍니다)

write: you are uid 65534, but your login is as uid 1000 

이 중 mesg로 설정되어 터미널에 쓰기 권한. 그래서 나는 inetutils-talkd (GNU 구현)를 보았습니다. 나는 그것이 ttymsg 함수를 사용하고이 함수가 내가 원하는 것을 수행한다고 생각했지만이 함수는 파이썬에서 사용할 수 없다고 생각한다.

그래서 주요 질문은 다음과 같습니다. python에서 ttymsg 기능과 같은 것이 있습니까? 아니면 내가 원하는 것을 쓰기 위해 어떻게해야합니까?

답변

0

/var/run/utmp 파일에는 터미널의 활성 세션에 대한 정보가 들어 있습니다. 그것은으로 해석 될 수있다 : 그 접근 방식

import struct 

sig = 'hi32s4s32s256shhiii36x' 
size = struct.calcsize(sig) 
file = open('/var/run/utmp', 'rb') 
chunk = file.read(size) 
entrys = [] 
while len(chunk) == size: 
    entry = struct.unpack(chunk) 
    entrys.append() 
    chunk = file.read(size) 

나는 터미널을 선택하고 해당 터미널에 기록하기 위해 필요한 데이터를 수집 할 수 있습니다.