{"id":37050238,"url":"https://github.com/maxrunsoftware/huc","last_synced_at":"2026-01-14T05:49:42.426Z","repository":{"id":65043159,"uuid":"348883435","full_name":"maxrunsoftware/huc","owner":"maxrunsoftware","description":"Various command line utilities","archived":false,"fork":false,"pushed_at":"2024-03-21T15:15:07.000Z","size":2160,"stargazers_count":12,"open_issues_count":5,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-05T05:43:26.189Z","etag":null,"topics":["csharp","csv","email","ftp","ftps","huc","sftp","sql"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxrunsoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-03-17T23:43:41.000Z","updated_at":"2025-05-02T15:07:29.000Z","dependencies_parsed_at":"2023-10-20T01:53:53.726Z","dependency_job_id":null,"html_url":"https://github.com/maxrunsoftware/huc","commit_stats":null,"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/maxrunsoftware/huc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrunsoftware%2Fhuc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrunsoftware%2Fhuc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrunsoftware%2Fhuc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrunsoftware%2Fhuc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxrunsoftware","download_url":"https://codeload.github.com/maxrunsoftware/huc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrunsoftware%2Fhuc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28411551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","csv","email","ftp","ftps","huc","sftp","sql"],"created_at":"2026-01-14T05:49:41.715Z","updated_at":"2026-01-14T05:49:42.421Z","avatar_url":"https://github.com/maxrunsoftware.png","language":"C#","readme":"# HUC: Various Command Line Tools To Make Your Life Easier\n## [Max Run Software](https://www.maxrunsoftware.com)\nThere is currently a 2.0 branch in development. If you have a feature request feel free to submit an enhancement and we'll try and get it added to the 2.0 branch.\n\nHUC is a simple to use open source command line tool for performing various tasks.\nIt is a self contained executable built on DotNet 5 and has builds available for Windows, Mac, and Linux\n\n\u0026nbsp;\n\nGet list of commands\n```\nhuc\n```\n\nGet list of parameters for a command\n```\nhuc Sql help\nhuc FtpPut help\nhuc Table help\nhuc \u003ccommand\u003e help\n```\n\n\u0026nbsp;\n\n## Operations\n\n- [FTP / FTPS / SFTP](#ftp-ftps-sftp)\n- [SSH](#ssh)\n- [Email](#email)\n- [Microsoft SQL / MySQL / Oracle](#sql)\n    - [Querying](#sql)\n    - [Importing Tab Delimited Data](#sql)\n    - [Exporting Binary Data to Files](#sql)\n    - [Downloading Files Based on a SQL Query](#sql)\n- [ZIP](#zip)\n- [Windows Task Scheduler Management](#windows-task-scheduler)\n    - [List Tasks](#windows-task-scheduler)\n    - [Add Task](#windows-task-scheduler)\n    - [Remove Task](#windows-task-scheduler)\n- [File Operations](#file-operations)\n    - [Tab Delimited File Data Conversion](#file-operations)\n    - [Text Replacement](#file-operations)\n    - [Appending](#file-operations)\n    - [Split](#file-operations)\n    - [Generate File Checksums](#file-operations)\n    - [Encryption and Decryption](#file-operations)\n    - [Generate Random Data](#file-operations)\n- [Directory Operations](#directory-operations)\n    - [List Directory to Tab Delimited File](#directory-operations)\n    - [Get Directory Size](#directory-operations)\n    - [Flatten Directory Structure](#directory-operations)\n    - [Remove Empty Directories](#directory-operations)\n- [Web Server](#web-server)\n- [Active Directory](#active-directory)\n    - [List Objects](#active-directory)\n    - [List Object Details](#active-directory)\n    - [List Users / Groups / Computers](#active-directory)\n    - [List Users Of Group](#active-directory)\n    - [Add User / Group / OU](#active-directory)\n    - [Add User To Group](#active-directory)\n    - [Remove User / Group / OU](#active-directory)\n    - [Remove User From Group](#active-directory)\n    - [Move User / Group](#active-directory)\n    - [Enable / Disable User](#active-directory)\n    - [Change User Password](#active-directory)\n- [Google Sheets](#google-sheets)\n    - [Query](#google-sheets)\n    - [Import Into a Sheet](#google-sheets)\n    - [Add Row to Sheet](#google-sheets)\n    - [Clear Sheet](#google-sheets)\n    - [Format Cells](#google-sheets)\n- [VMware](#vmware)\n    - [List VMware Objects](#vmware)\n    - [List VMware Objects to JSON](#vmware)\n    - [Query Raw JSON Data](#vmware)\n    - [Perform Operations On VMs](#vmware)\n- [Generation of Public and Private Keys](#generate-public-and-private-keys)\n- [Using a Properties File](#using-a-properties-file)\n- [Helper Utility Functions](#helper-functions)\n- [Logging](#logging)\n\n\n\u0026nbsp;\n___\n### Email\n\nSend an email\n```\nhuc email -h=\"smtp.somerelay.org\" -from=\"someone@aol.com\" -to=\"grandma@aol.com\" -s=\"Grandpa Birthday\" -b=\"Tell Grandpa/nHAPPY   BIRTHDAY!\"\n```\n\u003cbr/\u003e\n\nSend an email with CC and BCC and attachments\n```\nhuc email -h=\"smtp.somerelay.org\" -to=\"person1@aol.com;person2@aol.com\" -cc=\"person3@aol.com\" -bcc=\"person4@aol.com\" -s=\"Some subject   text\" -b=\"Some text for body\" myAttachedFile1.csv myAttachedFile2.txt\n```\n\u003cbr/\u003e\n\nSend an email with text templating\n```\nhuc email -h=\"smtp.somerelay.org\" -to=\"person1@aol.com\" -t1=\"Sandy\" -t2=\"some other text\" -s=\"Email for {t1}\" -b=\"Hi {t1},\\nHere is   your {t2}\"\n```\n\n\n\n\u0026nbsp;\n___\n### Delimited Files\n  \nConvert tab delimited file to csv delimited file using defaults\n```\ncp Orders.txt Orders.csv\nhuc table Orders.csv\n```\n\u003cbr/\u003e\n\nConvert tab delimited file to csv delimited file using specific delimiters and excluding the header row\n```\ncp Orders.txt Orders.csv\nhuc table -hd=pipe -hq=single -he=true -dd=pipe -dq=single -de=false Orders.csv\n```\n\u003cbr/\u003e\n\nConvert tab delimited file to HTML table using defaults\n```\ncp Orders.txt Orders.html\nhuc tablehtml Orders.html\n```\n\u003cbr/\u003e\n\nConvert tab delimited file to HTML table embeddeding a custom CSS file and Javascript file\n```\ncp Orders.txt Orders.html\nhuc tablehtml -css=MyStyleSheet.css -js=MyJavascriptFile.js Orders.html\n```\n\u003cbr/\u003e\n\nConvert tab delimited file to XML\n```\ncp Orders.txt Orders.xml\nhuc tablexml Orders.xml\n```\n\u003cbr/\u003e\n\nConvert tab delimited file to JSON\n```\ncp Orders.txt Orders.json\nhuc tablejson Orders.json\n```\n\u003cbr/\u003e\n\nConvert tab delimited file to fixed width file\n```\nhuc tableFixedWidth Orders.txt 10 20 15 9 6 0 4 200\n```\n\n\n\n\u0026nbsp;\n___\n### FTP FTPS SFTP\n  \nList files in default directory\n```\nhuc ftplist -h=192.168.1.5 -u=testuser -p=testpass\nhuc ftplist -e=explicit -h=192.168.1.5 -u=testuser -p=testpass\nhuc ftplist -e=implicit -h=192.168.1.5 -u=testuser -p=testpass\nhuc ftplist -e=ssh -h=192.168.1.5 -u=testuser -p=testpass\n```\n\u003cbr/\u003e\n\nRecursively list files in /home/user directory\n```\nhuc ftplist -h=192.168.1.5 -u=testuser -p=testpass -r \"/home/user\"\nhuc ftplist -e=explicit -h=192.168.1.5 -u=testuser -p=testpass -r \"/home/user\"\nhuc ftplist -e=implicit -h=192.168.1.5 -u=testuser -p=testpass -r \"/home/user\"\nhuc ftplist -e=ssh -h=192.168.1.5 -u=testuser -p=testpass -r \"/home/user\"\n```\n\u003cbr/\u003e\n\nGet a file from a FTP/FTPS/SFTP server\n```\nhuc ftpget -h=192.168.1.5 -u=testuser -p=testpass remotefile.txt\nhuc ftpget -e=explicit -h=192.168.1.5 -u=testuser -p=testpass remotefile.txt\nhuc ftpget -e=implicit -h=192.168.1.5 -u=testuser -p=testpass remotefile.txt\nhuc ftpget -e=ssh -h=192.168.1.5 -u=testuser -p=testpass remotefile.txt\n```\n\u003cbr/\u003e\n\nPut a file on a FTP/FTPS/SFTP server\n```\nhuc ftpput -h=192.168.1.5 -u=testuser -p=testpass localfile.txt\nhuc ftpput -e=explicit -h=192.168.1.5 -u=testuser -p=testpass localfile.txt\nhuc ftpput -e=implicit -h=192.168.1.5 -u=testuser -p=testpass localfile.txt\nhuc ftpput -e=ssh -h=192.168.1.5 -u=testuser -p=testpass localfile.txt\n```\n\n\n\u0026nbsp;\n___    \n### SQL\n  \nQuery Microsoft SQL server and output tab delimited data file\n```\nhuc sql -c=\"Server=192.168.1.5;Database=NorthWind;User Id=testuser;Password=testpass;\" -s=\"SELECT TOP 100 * FROM Orders\" Orders100.txt\n```\n\u003cbr/\u003e\n\nQuery Microsoft SQL server and output multiple tab delimited data files from multiple result sets\n```\nhuc sql -c=\"Server=192.168.1.5;Database=NorthWind;User Id=testuser;Password=testpass;\" -s=\"SELECT * FROM Orders; SELECT * FROM   Employees\" Orders.txt Employees.txt\n```\n\u003cbr/\u003e\n\nQuery Microsoft SQL server with SQL script file and output tab delimited data file\n```\nprintf \"SELECT TOP 100 *\\nFROM Orders\" \u003e mssqlscript.sql\nhuc sql -c=\"Server=192.168.1.5;Database=NorthWind;User Id=testuser;Password=testpass;\" -f=\"mssqlscript.sql\" OrdersFromScript.txt\n```\n\u003cbr/\u003e\n\nUpload tab delimited file into a SQL server table\n```\nhuc sqlload -c=\"Server=192.168.1.5;Database=NorthWind;User Id=testuser;Password=testpass;\" -d=NorthWind -s=dbo -t=TempOrders   Orders.txt\n```\n\u003cbr/\u003e\n\nUpload tab delimited file into a SQL server table and include the file row number and a time stamp, dropping the table if it exists already\n```\nhuc sqlload -c=\"Server=192.168.1.5;Database=NorthWind;User Id=testuser;Password=testpass;\" -drop -rowNumberColumnName=RowNumber   -currentUtcDateTimeColumnName=UploadTime -d=NorthWind -s=dbo -t=TempOrders Orders.txt\n```\n\n\n\u0026nbsp;\n___\n### Zip\n  \nZipping a file\n```\nhuc zip myOuputFile.zip someLocalFile.txt\n```\n\u003cbr/\u003e\n\nZipping multiple files\n```\nhuc zip myOuputFile.zip *.txt *.csv\n```\n\n\n\u0026nbsp;\n___    \n### Windows Task Scheduler\n  \nList all tasks on scheduler\n```\nhuc WindowsTaskSchedulerList -h=\"localhost\" -u=\"administrator\" -p=\"password\" ALL\n```\n\u003cbr/\u003e\n\nList a specific task MyTask on scheduler with details\n```\nhuc WindowsTaskSchedulerList -h=\"localhost\" -u=\"administrator\" -p=\"password\" -d /myTaskFolder/MyTask\n```\n\u003cbr/\u003e\n\nCreate a Windows Task Scheduler job to run every day at 4:15am\n```\nhuc WindowsTaskSchedulerAdd -h=\"localhost\" -u=\"administrator\" -p=\"password\" -taskUsername=\"system\" -tw=\"c:\\temp\" -t1=\"DAILY 04:15\"   -tn=\"MyTask\" \"C:\\temp\\RunMe.bat\"\n```\n\u003cbr/\u003e\n\nCreate a Windows Task Scheduler job to run every hour at 35 minutes after the hour\n```\nhuc WindowsTaskSchedulerAdd -h=\"localhost\" -u=\"administrator\" -p=\"password\" -taskUsername=\"system\" -tw=\"c:\\temp\" -t1=\"HOURLY 35\"   -tn=\"MyTask\" \"C:\\temp\\RunMe.bat\"\n```\n\u003cbr/\u003e\n\nCreate a Windows Task Scheduler job to run Monday and Wednesday at 7:12pm \n```\nhuc WindowsTaskSchedulerAdd -h=\"localhost\" -u=\"administrator\" -p=\"password\" -taskUsername=\"system\" -tw=\"c:\\temp\" -t1=\"MONDAY 19:12\"   -t2=\"WEDNESDAY 19:12\" -tn=\"MyTask\" \"C:\\temp\\RunMe.bat\"\n```\n\u003cbr/\u003e\n\nDelete a Windows Task Scheduler job\n```\nhuc WindowsTaskSchedulerRemove -h=\"localhost\" -u=\"administrator\" -p=\"password\" MyTask\n```\n\n\n\u0026nbsp;\n___ \n### File Operations\n  \nReplace all instances of Person with Steve in the file mydoc.txt\n```\nhuc FileReplaceString \"Person\" \"Steve\" mydoc.txt\n```\n\u003cbr/\u003e\n  \nAppend files file1.txt and file2.txt to mainfile.txt\n```\nhuc FileAppend mainfile.txt file1.txt file2.txt\n```\n\u003cbr/\u003e\n  \nSplit a file on the new line character into 3 other files\n```\nhuc FileSplit Orders.txt Orders1.txt Orders2.txt Orders3.txt\n```\n\u003cbr/\u003e\n  \nGenerate MD5 checksum for file MyFile.zip\n```\nhuc FileChecksum MyFile.zip\n```\n\u003cbr/\u003e\n\nGenerate SHA512 checksum for files *.txt\n```\nhuc FileChecksum -t=SHA512 *.txt\n```\n\u003cbr/\u003e\n\nEncrypt file with password\n```\nhuc FileEncrypt -p=password data.txt data.encrypted\n```\n\u003cbr/\u003e\n\nDecrypt file with password\n```\nhuc FileDecrypt -p=password data.encrypted dataDecrypted.txt\n```\n\u003cbr/\u003e\n\nEncrypt file with public key\n```\nhuc FileEncrypt -pk=MyPublicKey.txt data.txt data.encrypted\n```\n\u003cbr/\u003e\n\nDecrypt file with private key\n```\nhuc FileDecrypt -pk=MyPrivateKey.txt data.encrypted dataDecrypted.txt\n```\n\u003cbr/\u003e\n  \nGenerate file with random data\n```\nhuc GenerateRandomFile testdata.txt\nhuc GenerateRandomFile -l=1000000 testdata1.txt testdata2.txt testdata3.txt\n```\n\n\n\u0026nbsp;\n___ \n### Directory Operations\n  \nList some file and directory information to a tab delimited file\n```\nhuc DirectoryList -creationTime -lastAccessTimeUtc -lastWriteTime -n -nf -p -s -recursiveDepth=10 -pattern=*.cs C:\\temp\\MyDirectory   mydatafile.txt \n```\n\u003cbr/\u003e\n\nGet the size of a directory\n```\nhuc DirectorySize C:\\temp\\MyDirectory \n```\n\u003cbr/\u003e\n\nMove all files in all subdirectories of target directory into the target directory, but don't overwrite if the file already exists\n```\nhuc DirectoryFlatten C:\\temp\\MyDirectory\n```\n\u003cbr/\u003e\n\nMove all files in all subdirectories of target directory into the target directory, and keep the newest file\n```\nhuc DirectoryFlatten -c=KeepNewest C:\\temp\\MyDirectory\n```\n\u003cbr/\u003e\n\nDeletes empty subdirectories recursively\n```\nhuc DirectoryRemoveEmpty C:\\temp\\MyDirectory\n```\n\n\n\u0026nbsp;\n___ \n### Web Server\n  \nStart webserver and host files out of the current directory\n```\nhuc WebServer .\n```\n\u003cbr/\u003e\n\nStart webserver on port 80 and host files out of c:\\www directory\n```\nhuc WebServer -o=80 c:\\www\n```\n\u003cbr/\u003e\n\nStart webserver on port 80 and host files out of c:\\www directory and require a username and password\n```\nhuc WebServer -o=80 -u=user -p=testpass c:\\www\n```\n\u003cbr/\u003e\n\n\n\u0026nbsp;\n___\n### SSH\n  \nIssue LS command\n```\nhuc SSH -h=192.168.1.5 -u=testuser -p=testpass \"ls\"\n```\n\u003cbr/\u003e\n\nChange directory and issue LS command with options\n```\nhuc SSH -h=192.168.1.5 -u=testuser -p=testpass \"cd someDirectory; ls -la;\"\n```\n\u003cbr/\u003e\n\n\n\u0026nbsp;\n___  \n### Active Directory\n  \nList all objects and their attributes to a tab delimited file\n```\nhuc ActiveDirectoryList -h=192.168.1.5 -u=administrator -p=testpass adlist.txt\n```\n\u003cbr/\u003e\n\nList various object types\n```\nhuc ActiveDirectoryListObjects -h=192.168.1.5 -u=administrator -p=testpass ?teve*\nhuc ActiveDirectoryListUsers -h=192.168.1.5 -u=administrator -p=testpass\nhuc ActiveDirectoryListGroups -h=192.168.1.5 -u=administrator -p=testpass Group*\nhuc ActiveDirectoryListComputers -h=192.168.1.5 -u=administrator -p=testpass\n```\n\u003cbr/\u003e\n\nList various object types and display specific LDAP fields\n```\nhuc ActiveDirectoryListObjects -h=192.168.1.5 -u=administrator -p=testpass -pi=*Name\nhuc ActiveDirectoryListUsers -h=192.168.1.5 -u=administrator -p=testpass   -pi=DistinguishedName,OganizationalUnit,ObjectName,ObjectGuid ?teve*\nhuc ActiveDirectoryListGroups -h=192.168.1.5 -u=administrator -p=testpass -pi=*Name,Object*\nhuc ActiveDirectoryListComputers -h=192.168.1.5 -u=administrator -p=testpass -pi=* MyComputer?\n```\n\u003cbr/\u003e\n\nList additional details for an Active Directory object\n```\nhuc ActiveDirectoryListObjectDetails -h=192.168.1.5 -u=administrator -p=testpass Administrator\nhuc ActiveDirectoryListObjectDetails -h=192.168.1.5 -u=administrator -p=testpass Users\nhuc ActiveDirectoryListObjectDetails -h=192.168.1.5 -u=administrator -p=testpass ?teve*\n```\n\u003cbr/\u003e\n\nChange a user's password (note: requires LDAPS certificate to be installed on AD server or running HUC on the AD server itself)\n```\nhuc ActiveDirectoryChangePassword -h=192.168.1.5 -u=administrator -p=testpass testuser newpassword\n```\n\u003cbr/\u003e\n\nAdd User\n```\nhuc ActiveDirectoryAddUser -h=192.168.1.5 -u=administrator -p=testpass testuser\nhuc ActiveDirectoryAddUser -h=192.168.1.5 -u=administrator -p=testpass -firstname=\"steve\" -lastname=\"foster\" testuser\n```\n\u003cbr/\u003e\n\nAdd Group\n```\nhuc ActiveDirectoryAddGroup -h=192.168.1.5 -u=administrator -p=testpass testgroup\nhuc ActiveDirectoryAddGroup -h=192.168.1.5 -u=administrator -p=testpass -gt=GlobalSecurityGroup testgroup\n```\n\u003cbr/\u003e\n\nDelete User\n```\nhuc ActiveDirectoryRemoveUser -h=192.168.1.5 -u=administrator -p=testpass testuser\n```\n\u003cbr/\u003e\n\nDelete Group\n```\nhuc ActiveDirectoryRemoveGroup -h=192.168.1.5 -u=administrator -p=testpass testgroup\n```\n\u003cbr/\u003e\n\nMove User\n```\nhuc ActiveDirectoryMoveUser -h=192.168.1.5 -u=administrator -p=testpass testuser MyNewOU\n```\n\u003cbr/\u003e\n\nMove Group\n```\nhuc ActiveDirectoryMoveGroup -h=192.168.1.5 -u=administrator -p=testpass testgroup MyNewOU\n```\n\u003cbr/\u003e\n\nAdd user to group\n```\nhuc ActiveDirectoryAddUserToGroup -h=192.168.1.5 -u=administrator -p=testpass testuser MyGroup1 SomeOtherGroup\n```\n\u003cbr/\u003e\n\nRemove user from group\n```\nhuc ActiveDirectoryRemoveUserFromGroup -h=192.168.1.5 -u=administrator -p=testpass testuser MyGroup1\n```\n\u003cbr/\u003e\n\nEnable user\n```\nhuc ActiveDirectoryEnableUser -h=192.168.1.5 -u=administrator -p=testpass testuser\n```\n\u003cbr/\u003e\n\nDisable user\n```\nhuc ActiveDirectoryDisableUser -h=192.168.1.5 -u=administrator -p=testpass testuser\n```\n\u003cbr/\u003e\n\nDisable users who have not logged on in the past 7 days\n```\nhuc ActiveDirectoryDisableUsers -h=192.168.1.5 -u=administrator -p=testpass -l=7\n```\n\n\n\u0026nbsp;\n___  \n### Google Sheets\n  \nFor setting up the Google account see...\\\nhttps://medium.com/@williamchislett/writing-to-google-sheets-api-using-net-and-a-services-account-91ee7e4a291 \\\n\\\nClear all data from a Google Sheet tab named Sheet1 (sheet ID is in the URL)\n```\nhuc GoogleSheetsClear -k=\"MyGoogleAppKey.json\" -a=\"MyApplicationName\" -id=\"dkjfsd328sdfuhscbjcds8hfjndsfdsfdsfe\" -s=\"Sheet1\"\n```\n\u003cbr/\u003e\n\nClear all data from the first Google Sheet tab\n```\nhuc GoogleSheetsClear -k=\"MyGoogleAppKey.json\" -a=\"MyApplicationName\" -id=\"dkjfsd328sdfuhscbjcds8hfjndsfdsfdsfe\"\n```\n\u003cbr/\u003e\n\nClear the first sheet tab and upload Orders.txt tab delimited file to it\n```\nhuc GoogleSheetsLoad -k=\"MyGoogleAppKey.json\" -a=\"MyApplicationName\" -id=\"dkjfsd328sdfuhscbjcds8hfjndsfdsfdsfe\" Orders.txt\n```\n\u003cbr/\u003e\n\nAdd a row to first sheet with the values \"AA\", blank, \"CC\"\n```\nhuc GoogleSheetsAddRow -k=\"MyGoogleAppKey.json\" -a=\"MyApplicationName\" -id=\"dkjfsd328sdfuhscbjcds8hfjndsfdsfdsfe\" AA null CC\n```\n\u003cbr/\u003e\n\nMake the first row of data have red text, blue background, and bold\n```\nhuc GoogleSheetsFormatCells -k=\"MyGoogleAppKey.json\" -a=\"MyApplicationName\" -id=\"dkjfsd328sdfuhscbjcds8hfjndsfdsfdsfe\" -width=100 -b   -fc=Red -bc=Blue \n```\n\u003cbr/\u003e\n\nQuery all data from first sheet and output it to a tab delimited file MyFile.txt\n```\nhuc GoogleSheetsQuery -k=\"MyGoogleAppKey.json\" -a=\"MyApplicationName\" -id=\"dkjfsd328sdfuhscbjcds8hfjndsfdsfdsfe\" MyFile.txt\n```\n\n\n\u0026nbsp;\n___ \n### Generate Public and Private Keys\n  \nGenerate RSA public and private key files\n```\nhuc GenerateKeyPair MyPublicKey.txt MyPrivateKey.txt\n```\n\u003cbr/\u003e\n\nGenerate RSA public and private key files with RSA length 4096\n```\nhuc GenerateKeyPair -l=4096 MyPublicKey.txt MyPrivateKey.txt\n```\n\n\n\u0026nbsp;\n___  \n### VMware\n  \nQuery various information in a VCenter 6.7+ infrastructure\n```\nhuc VMwareList -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass DataCenter VM StoragePolicy\nhuc VMwareList -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass VM_Quick\nhuc VMwareList -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass VM_WithoutTools\nhuc VMwareList -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass VM_PoweredOff\nhuc VMwareList -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass VM_IsoAttached\n```\n\u003cbr/\u003e\n\nQuery raw JSON data from VCenter 6.7+ infrastructure\n```\nhuc VMwareQuery -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass  /rest/vcenter/host\nhuc VMwareQuery -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass  /rest/vcenter/vm\nhuc VMwareQuery -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass  /rest/vcenter/vm/vm-1692\n```\n\u003cbr/\u003e\n\nQuery all infrastructure data to a JSON file\n```\nhuc VMwareQueryJSON -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyDataFile.json\n```\n\u003cbr/\u003e\n\nPerform various actions on a VM\n```\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM None\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM Shutdown\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM Reboot\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM Standby\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM Reset\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM Start\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM Stop\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM Suspend\nhuc VMwareVM -h=192.168.1.5 -u=testuser@vsphere.local -p=mypass MyVM DetachISOs\n```\n\n\n\u0026nbsp;\n___\n### Putting It All Together\n  \nQuery SQL server, convert the data, sftp it, zip it, then email the data\n```\nhuc sql -c=\"Server=192.168.1.5;Database=NorthWind;User Id=testuser;Password=testpass;\" -s=\"SELECT * FROM Orders\" orders.csv\nhuc table -hd=comma -hq=none -dd=comma -dq=none orders.csv\nhuc ftpput -e=ssh -h=192.168.1.5 -u=testuser -p=testpass orders.csv\nhuc zip orders.zip \"*.csv\"\nhuc email -h=\"smtp.somerelay.org\" -from=\"me@aol.com\" -to=\"person@aol.com\" -s=\"Orders data\" -b=\"Attached is the order data\" \"*.zip\"\n```\n\n\n\u0026nbsp;\n___  \n### Using a Properties File\n  \nWhen huc first runs, it attempts to generate a huc.properties file in the directory of the executable. This file contains all of the parameters for each command. You can populate this file with certain properties so you don't have to type them in every time. The huc program will first check if a parameter was supplied at the command line. If not, if will then check the properties file (commandline overrides properties file). If still not found it will attempt to use a default value for some parameters (not all, some are required to be provided).\n\nSo assuming a properties file of...\n```properties\nsql.connectionString=Server=192.168.1.5;Database=NorthWind;User Id=testuser;Password=testpass;\ntable.headerDelimiter=comma\ntable.headerQuoting=none\ntable.dataDelimiter=comma\ntable.dataQuoting=none\nftpput.host=192.168.1.5\nftpput.encryptionMode=SSH\nftpput.username=testuser\nftpput.password=testpass\nemail.host=smtp.somerelay.org\nemail.from=me@aol.com\n```\nThe commands now become...\n```\nhuc sql -s=\"SELECT * FROM Orders\" orders.csv\nhuc table orders.csv\nhuc ftpput orders.csv\nhuc zip orders.zip \"*.csv\"\nhuc email -to=\"person@aol.com\" -s=\"Orders data\" -b=\"Attached is the order data\" \"*.zip\"\n```\n\n\n\u0026nbsp;\n___ \n### Helper Functions\n\nShow current properties set in the properties file\n```\nhuc ShowProperties\n```\n\u003cbr/\u003e\n\nShow all available properties\n```\nhuc ShowProperties -a\n```\n\u003cbr/\u003e\n\nConvert Binary file to Base16\n```\nhuc ConvertBinaryToBase16 myinputfile.txt myoutputfile.txt\n```\n\u003cbr/\u003e\n\nConvert Binary file to Base64\n```\nhuc ConvertBinaryToBase64 myinputfile.txt myoutputfile.txt\n```\n\u003cbr/\u003e\n\nGet a web file\n```\nhuc wget https://github.com/Steven-D-Foster/huc/releases/download/v1.3.0/huc-linux.zip\n```\n\u003cbr/\u003e\n\nGet a web page\n```\nhuc wget https://github.com github.txt\n```\n\u003cbr/\u003e\n\nShow internet time\n```\nhuc time\n```\n\u003cbr/\u003e\n\nShow drift of local clock compared to internet time\n```\nhuc time -d\n```\n\u003cbr/\u003e\n\nShow all of the colors available for commands that take a color parameter\n```\nhuc colors\n```\n\u003cbr/\u003e\n\nShow details for a specific color\n```\nhuc colors red\n```\n\u003cbr/\u003e\n\nTest JSAS service\n```\nhuc jsas https://192.168.0.10 MyPassword MyData\nhuc jsas https://192.168.0.10 MyPassword MyData NewFile.txt\n```\n\u003cbr/\u003e\n\nEncrypt Password to use in huc.properties file\n```\nhuc EncodePassword mySecretPassword\n```\n\n\n\u0026nbsp;\n___ \n### Logging\n  \nHUC supports various logging. At the console level HUC supports ```INFO```, ```DEBUG```, and ```TRACE``` logging levels. By default the logging level is ```INFO```. To enable ```DEBUG``` level logging at the console, specify the ```-debug``` parameter at the command line. To enable ```TRACE``` level logging, specify the ```-trace``` parameter at the command line.\n\nHUC also supports logging to a file. To enable file logging, use the parameters ```Log.FileLevel``` and ```Log.FileName``` in the ```huc.properties``` file to specify the log level (```CRITICAL```, ```ERROR```, ```WARN```, ```INFO```, ```DEBUG```, ```TRACE```) and the filename of the file to write out to.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxrunsoftware%2Fhuc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxrunsoftware%2Fhuc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxrunsoftware%2Fhuc/lists"}