Send desktop notifications to remote Linux machines via SSH with a beautiful, interactive command-line interface.
- π― Smart Host Management - Automatic DNS resolution and SSH connectivity testing
- π€ User Management - Remember users per host for quick selection
- π¬ Flexible Messaging - Preset messages plus custom message support
- π Secure - No password storage, secure SSH connections
- π¨ Beautiful Interface - Rich terminal UI with colors and interactive menus
- π¦ Easy Installation - One command pip install
- β‘ Fast Setup - Auto-configuring with sensible defaults
pip install whisper-ssh# Interactive mode (recommended)
whisper-ssh
# Or use the short alias
whisperThe tool will guide you through:
- Select Target Host - Choose from known hosts or add a new one
- DNS Resolution - Automatic hostname/IP resolution and validation
- Choose User - Select from previous users or add new
- Enter Password - Secure password input (never stored)
- Pick Message - Choose from presets or write custom message
- Send! - Notification appears on remote desktop
- System Administration - Notify users about maintenance, reboots, updates
- Development Teams - Notify about build completions, deployments
- Remote Work - Send meeting reminders, break notifications
- Automation - Integrate with scripts and monitoring systems
$ whisper-sshfrom whisper_ssh import RemoteNotificationManager
manager = RemoteNotificationManager()
# Send a notification
success = manager.send_notification(
ip_address="192.168.1.100",
username="john",
password="secret",
message="Build completed successfully!",
title="CI/CD Pipeline"
)
if success:
print("Notification sent!")# Send to multiple hosts at once
host_configs = [
{"ip": "192.168.1.100", "username": "user1", "password": "pass1"},
{"ip": "192.168.1.101", "username": "user2", "password": "pass2"},
]
results = manager.send_notification_to_multiple_hosts(
host_configs=host_configs,
message="System maintenance in 30 minutes",
title="System Notice"
)Configuration is automatically stored in ~/.config/whisper-ssh/remote_notify_config.json
{
"hosts": {
"server1": "192.168.1.100",
"workstation": "10.0.0.50"
},
"users": {
"server1": ["admin", "developer"],
"workstation": ["user"]
},
"preset_messages": [
"System maintenance starting in 30 minutes",
"Please save your work and log off",
"Meeting starting in 5 minutes"
]
}- System maintenance notifications
- Reboot warnings
- Meeting reminders
- Break notifications
- Build/deployment status
- Security updates
- Python 3.7+
- Network access to target machines
- Ubuntu/Linux with desktop environment
- SSH server running
libnotify-binpackage installed:sudo apt install libnotify-bin
- User logged into desktop session
- β Arrow key navigation
- β Searchable host/user lists
- β Colored output and status indicators
- β Progress bars and loading indicators
- β Error handling with helpful messages
- π View all configuration
- β Add/remove hosts and users
- π Manage preset messages
- π§ͺ Test connectivity
- π€ Export/import configuration
- π Reset to defaults
- No Password Storage - Passwords are never saved to disk
- SSH Security - Uses Fabric's secure SSH implementation
- Input Validation - Prevents shell injection attacks
- Connection Testing - Validates hosts before attempting connections
"Connection failed"
- Verify SSH is running:
sudo systemctl status ssh - Check firewall:
sudo ufw status - Test manual connection:
ssh user@host
"Cannot resolve hostname"
- Check DNS settings
- Try using IP address instead
- Verify network connectivity
"Notification doesn't appear"
- Ensure user is logged into desktop
- Check if Do Not Disturb is enabled
- Verify notify-send is installed:
which notify-send
# Enable verbose SSH output
manager = RemoteNotificationManager()
# Set hide=False in send_notification for debuggingContributions are welcome! Please feel free to submit a Pull Request.
# Clone the repository
git clone https://github.com/JdMasuta/whisper-ssh.git
cd whisper-ssh
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black whisper-ssh/This project is licensed under the MIT License - see the LICENSE file for details.
- Fabric - High-level SSH library
- Questionary - Interactive CLI prompts
- Rich - Beautiful terminal output
- Validators - Input validation