Git Product home page Git Product logo

python-nftables-tutorial's Introduction

python nftables tutorial

The nftables framework has a native python interface that you can use to interact with the kernel subsystem without having to call the nft binary. This small tutorial shows how to get started with the nftables library in your python program.

The nftables python module is a native python binding for libnftables, the nftables library that converts the human-readable syntax into the low level expression that the kernel subsystem runs.

how to use libnftables in python

In Debian systems, the nftables python module is included in the python3-nftables package. Make sure you have it installed before proceeding: sudo apt install python3-nftables.

Then, basically, in your code:

  • import the nftables module
  • init the libnftables instance
  • configure library behavior
  • run commands and parse the output, ideally using the native JSON format
import nftables
import json

nft = nftables.Nftables()
nft.set_json_output(True)
rc, output, error = nft.cmd("list ruleset")
print(json.loads(output))

The code above should be equivalent to running nft -j list ruleset.

code examples

The best way to learn how to do something is often to follow an example. This repository contains several python code examples using the libnftables python library and the libnftables JSON format.

more information

Check the nftables wiki page: https://wiki.nftables.org

Check the nftables manual page on your system: nft(8)

Check the libnftables-json manual page on your system: libnftables-json(5)

Check related blogpost: https://ral-arturo.org/2020/11/22/python-nftables-tutorial.html

python-nftables-tutorial's People

Contributors

aborrero avatar stepnem avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

python-nftables-tutorial's Issues

how to delete a rule?

i just switched the "add" cmd into a "delete" and that crashed my python process, i guess i should be using handles but it's not obvious how to do that via this json interface.

Are non-Debian systems supported?

In Debian systems, the nftables python module is included in the python3-nftables package

Is there a git repository or pip installable package for python3-nftables which can be used for non-Debian systems?

json_cmd not working as intended

Hi! Sorry for using this place for reporting this issue, as I'm aware the problem is not here.

I wanted to share this analysis with you because you may already know where the problem is.

I was translating some nft cli bash scripts to python and tried to apply what I learned in https://man.archlinux.org/man/extra/nftables/libnftables-json.5.en , but I could not make it work.

I made a repo with the minimal example that shows the difference: https://github.com/franalbani/nftableson

Thanks for your time and forgive me if this is inappropriate.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.