A Python wrapper around clamd
, the ClamAV daemon.
This is a maintained and updated fork of https://github.com/graingert/python-clamd/, credit goes to the original developer(s).
Using pip
:
pip install clamdpy
from io import BytesIO
from clamdpy import ClamdNetworkSocket
clamd = ClamdNetworkSocket(
host="127.0.0.1",
port=3310,
timeout=15,
)
clamd.ping()
#> 'PONG'
clamd.version()
#> VersionInfo(version='ClamAV 0.103.9', signature=27065, signature_date=datetime(2023, 10, 18, 9, 49, 14))
# Raw response can be fetched as well:
clamd.version(raw=True)
#> 'ClamAV 0.103.9/27065/Wed Oct 18 09:49:14 2023'
clamd.instream(BytesIO(b"data"))
#> ScanResult(path='stream', reason=None, status='OK')
Most of the clamd commands are implemented (a couple ones are missing and should be implemented sooner or later).
It is possible to use UNIX sockets as well:
from clamdpy import ClamdUnixSocket
clamd = ClamdUnixSocket(path="/var/run/clamav/clamd.ctl")
By default, \n
will be used to terminate lines. Clamd also supports NULL
characters:
from clamdpy import ClamdNetworkSocket
clamd = ClamdNetworkSocket(line_terminator="z")
Warning
Support for the NULL
character isn't tested and may not work as it doesn't play well with Python. Use with caution.