Skip to main content

CSV & JSON Formats

Import and export hosts using CSV (spreadsheet) or JSON (structured data) formats for bulk operations and backups.

CSV Format

Perfect for spreadsheet editing, bulk imports, and non-technical users.

CSV Structure

Required columns:

  • name - Host display name
  • host - IP address or hostname
  • username - SSH username

Optional columns:

  • port - Port number (default: 22)
  • password - SSH password (leave empty if using keys)
  • sshKeyId - SSH key ID from Xermius keychain
  • group - Group name for organization

CSV Example

name,host,port,username,password,sshKeyId,group
Production Web,192.168.1.100,22,admin,,,Production
Dev Server,192.168.1.101,22,developer,dev_pass,,Development
Database,db.example.com,3306,dbadmin,db_secret,,Production
Staging API,staging.example.com,2222,ubuntu,,,Staging
Client Server,client.com,22,root,,key-abc-123,Clients

CSV Import

Step 1: Prepare CSV File

Create CSV in Excel, Google Sheets, or text editor:

Excel/Google Sheets:

  1. Create table with column headers
  2. Fill in host data
  3. Export as CSV

Text Editor:

name,host,port,username,password,sshKeyId,group
Server 1,192.168.1.100,22,admin,,,Production
Server 2,192.168.1.101,22,admin,,,Production

Step 2: Import to Xermius

  1. Open Xermius
  2. Click NEW HOSTImport Hosts
  3. Click CSV tab
  4. Click Browse File and select your CSV
  5. Preview hosts
  6. Click Import

Step 3: Download Sample CSV

Not sure about format? Download a sample:

  1. In Import dialog, CSV tab
  2. Click Download Sample CSV
  3. Edit the sample with your data
  4. Import the edited file

CSV Export

Export All Hosts

  1. Click NEW HOSTExport Hosts
  2. Click CSV tab
  3. Review the CSV output
  4. Click Download File or Copy to Clipboard

Output example:

name,host,port,username,password,sshKeyId,group
Production Web,192.168.1.100,22,admin,,key-123,Production
Dev Server,192.168.1.101,22,developer,,,Development
Database Server,db.example.com,3306,dbadmin,,key-456,Production/Databases

Export Selected Hosts

  1. Select specific hosts in dashboard
  2. Right-click → Export Selected
  3. Choose CSV format
  4. Download or copy

CSV Use Cases

1. Bulk Import from Spreadsheet

1. Maintain host list in Google Sheets
2. Team members update sheet
3. Export as CSV
4. Import to Xermius
Perfect for: Teams managing many servers

2. Host Inventory Report

1. Export all hosts to CSV
2. Open in Excel
3. Create pivot tables
4. Analyze by group, username, port
Perfect for: Audits and documentation

3. Backup to Cloud Storage

1. Export to CSV weekly
2. Save to Dropbox/Google Drive
3. Version control with dates
4. Easy restore when needed
Perfect for: Regular backups

4. Migration Between Accounts

1. Export from old account (CSV)
2. Share file with team
3. Import to new accounts
4. Everyone has same hosts
Perfect for: Team onboarding

JSON Format

Structured data format for backups, version control, and programmatic access.

JSON Structure

[
{
"name": "Production Web Server",
"host": "192.168.1.100",
"port": 22,
"username": "admin",
"password": "",
"sshKeyId": "key-abc-123",
"group": "Production"
},
{
"name": "Dev Server",
"host": "192.168.1.101",
"port": 22,
"username": "developer",
"password": "dev_pass",
"sshKeyId": null,
"group": "Development"
}
]

JSON Fields

FieldTypeRequiredDescription
namestringYesHost display name
hoststringYesIP or hostname
portnumberNoPort (default: 22)
usernamestringYesSSH username
passwordstringNoSSH password
sshKeyIdstring/nullNoKeychain key ID
groupstringNoGroup name

JSON Export

  1. Click NEW HOSTExport Hosts
  2. Click JSON tab
  3. Review formatted JSON
  4. Click Download File or Copy to Clipboard

Output:

[
{
"name": "production-web-01",
"host": "192.168.1.100",
"port": 22,
"username": "admin",
"password": "",
"sshKeyId": "key-prod-web",
"group": "Production/Web"
},
{
"name": "staging-db",
"host": "staging.example.com",
"port": 3306,
"username": "dbadmin",
"password": "staging_pass",
"sshKeyId": null,
"group": "Staging/Database"
}
]

JSON Use Cases

1. Version Control with Git

# Backup hosts to git
xermius export --format json > hosts.json
git add hosts.json
git commit -m "Update host configurations"
git push

Perfect for: Tracking changes over time

2. Automated Backups

#!/bin/bash
# Daily backup script
DATE=$(date +%Y%m%d)
xermius export --format json > "backup-$DATE.json"

Perfect for: Automated backup systems

3. API Integration

// Load hosts from JSON
const hosts = require('./xermius-hosts.json');

// Process hosts programmatically
hosts.forEach(host => {
console.log(`Connecting to ${host.name}...`);
// Your automation logic
});

Perfect for: DevOps automation

4. Configuration Management

1. Store JSON in config repo
2. CI/CD reads JSON
3. Automated deployments
4. Infrastructure as code
Perfect for: GitOps workflows

Format Comparison

FeatureCSVJSON
Human Readable✅ Very⚠️ Moderate
Excel/Sheets✅ Native❌ Requires conversion
Version Control⚠️ Text diffs✅ Clear diffs
Programmatic⚠️ Parsing needed✅ Native
File Size✅ Smaller⚠️ Larger
Complex Data❌ Limited✅ Excellent
Non-tech Users✅ Easy❌ Technical

Advanced Examples

CSV with Special Characters

name,host,port,username,password,sshKeyId,group
"Production, Web Server",192.168.1.100,22,admin,,,Production
"Dev ""Test"" Server",192.168.1.101,22,dev,,,Development

Rules:

  • Use quotes for names with commas
  • Double quotes to escape quotes
  • Keep it simple when possible

JSON with Nested Groups

[
{
"name": "web-01",
"host": "192.168.1.100",
"port": 22,
"username": "admin",
"group": "Production/Web/Frontend"
},
{
"name": "api-01",
"host": "192.168.1.101",
"port": 22,
"username": "admin",
"group": "Production/API/Backend"
}
]

Groups support nesting with / separator.

Bulk Import with Groups

CSV for organized import:

name,host,port,username,password,sshKeyId,group
web-01,192.168.1.100,22,admin,,,Production/Web
web-02,192.168.1.101,22,admin,,,Production/Web
api-01,192.168.1.102,22,admin,,,Production/API
api-02,192.168.1.103,22,admin,,,Production/API
db-01,192.168.1.104,3306,dbadmin,,,Production/Database
cache-01,192.168.1.105,6379,admin,,,Production/Cache

All hosts imported with proper group structure!

Troubleshooting

CSV Import Issues

Problem: "Missing required column"

Solution:

  • Check first row has headers: name,host,username
  • Verify spelling matches exactly
  • No extra spaces in header names

Problem: "Invalid CSV format"

Solution:

  • Check for unescaped commas in names
  • Use quotes around values with special characters
  • Verify file is actually CSV, not Excel format

Problem: "Some hosts skipped"

Solution:

  • Check rows have all required fields
  • Empty host or username = skipped
  • Check for blank lines (remove them)

JSON Import Issues

Problem: "Invalid JSON format"

Solution:

  • Validate JSON with online validator
  • Check for missing commas between objects
  • Verify brackets match: [ and ]
  • Use proper quotes: " not ' or "

Problem: "Field type mismatch"

Solution:

  • Port must be number: 22 not "22"
  • Booleans are lowercase: true not True
  • Null is: null not "null"

Security Best Practices

Handling Passwords

CSV/JSON files contain passwords in plain text!

Security measures:

✅ Don't commit to Git
✅ Encrypt files at rest
✅ Delete after import
✅ Use SSH keys instead
✅ Secure file permissions

Better approach:

name,host,port,username,password,sshKeyId,group
Server1,192.168.1.100,22,admin,,key-id-here,Production

Leave password empty, use sshKeyId field!

.gitignore for Backups

# Don't commit host backups
hosts-backup-*.csv
hosts-backup-*.json
*-passwords.csv
credentials.json

Encryption Example

Encrypt before storing:

# Export and encrypt
xermius export --format json > hosts.json
gpg -c hosts.json # Creates hosts.json.gpg
rm hosts.json # Remove plain text

# Decrypt when needed
gpg hosts.json.gpg # Creates hosts.json
xermius import hosts.json
rm hosts.json # Clean up

Tips & Best Practices

CSV Tips

Use templates - Start with sample CSV
Test small first - Import 2-3 hosts to verify format
Remove passwords - Use SSH keys instead
Consistent naming - Follow naming convention
Document columns - Add comments in first row (delete before import)

JSON Tips

Pretty print - Use formatted JSON (easier to read)
Validate before import - Use JSON validator
Include metadata - Add export date in filename
Version control - Track changes in Git
Backup regularly - Weekly exports

General Tips

Backup before import - Export current hosts first
Preview always - Check before confirming import
Test connection - Verify a few hosts after import
Organize immediately - Add groups, tags after import


Quick tip: For team collaboration, use CSV in shared Google Sheets. For personal backups, use JSON in Git!