I need a way to configure a scheduled check for open ports on a list of servers and to get notified if something has changed from last check.
what's the best way to do it? If there is some solution which talk with Nagios it would be even better.
You could use check_udp and check_tcp if you know which ports should be open. This will check if a certain port is available for nagios on a remote server. You can add a service (check_udp/tcp) for each port you want to check on each server.
If you want to look for 'new/unidentified' open ports on a remote server, you could use check_scan. This will check for changes in the open ports. The first time it runs, it will create a baseline, the following checks will be checked against this baseline.