When performing Spectrum NCM backups we are receiving this error message "SPC-OCC-10170: Unable to process. Device configuration data contains special characters" and the backup fails. How can I find and fix this problem?
Any Spectrum version
This problem could be related to country specific accented characters but it could also come from hidden characters that may have been unknowingly introduced into a device config through cut and paste from a document source.
Here is a way to find hidden or accented characters to locate your problem.
1. Enable NCM debug by editing the config.xml file located in $SPECROOT/NCM directory.
a. Make a backup of this file
b. Edit the file. Find the following line:
<debugging type="java.lang.String">off</debugging>
c. Change it to read as follows and then save the change:
<debugging type="java.lang.String">max</debugging>
2. Kill the current running ncmservice process. processd will start a new ncmservice
3. Perform a capture on the same device that failed
4. Looks for a debug.log.* file in the $SPECROOT/NCM/logs/debug directory with a creation date of when the debug was enabled. Make a copy of this file to a unique file name like "before.txt".
5. This file will contain some debug data as well as the entire device configuration from the capture run in step 3 above. Use a text editor and remove all the debug leaving only the configuration. Be sure to use only a text editor like "vi" to edit this file.
6. If on Windows, start a bash shell by running "bash -login"
7. cd to the $SPECROOT/NCM/logs/debug directory and enter the following command to strip away any hidden characters where INPUT_FILE is the file saved in step 4 above and OUTPUT_FILE is the name of a new output file:
tr -c -d '\11\12\15\40-\176' < INPUT_FILE > OUTPUT_FILE
For example, if the INPUT_FILE name is "before.txt" and the OUTPUT_FILE name is "after.txt", the command would be as follows:
tr -c -d '\11\12\15\40-\176' < before.txt > after.txt
8. Using a program such as Notepad++ with the "compare" macro installed, run a compare check between the before.txt and the after.txt file. The compare macro will show the difference to include the hidden characters.
9. Once the illegal or hidden characters are located, you will need to manually make changes to the devices config by either copy and pasting the corrected line from the fixed.txt file or carefully retyping the line in so that the hidden or illegal characters are not reintroduced.
10. Run another NCM capture, the capture should now be successful.
For the command run in step 7 above:
tr -c -d '\11\12\15\40-\176' < INPUT_FILE > OUTPUT_FILE
octal 11 = tab
octal 12 = linefeed
octal 15 = carriage return
octal 40 through octal 176 = all the "good" keyboard characters
If using Notepad++, you will need to load the compare macro.