Originally published November 14, 2017 @ 10:52 pm
Long story short: old wiki is overloaded and broken; new wiki is not a wiki but SharePoint – a glorified file server; people are forced to improvise and put documentation on a WP wiki; bosses still want to see documentation in SharePoint; need a way to automatically sync new and updated posts from WP to SharePoint.
A couple of prerequisites to make this happen: the awesome wp2md
utility and the pandoc
package:
pip install git+https://github.com/dreikanter/wp2md yum -y install pandoc # Optional packages for converting to PDF yum -y install texlive-latex pdflatex texlive
The default WP behavior when exporting posts is to prepend the filename with the date. Obviously, you want to remove this date prefix if you want exported posts to overwrite older files on SharePoint. The script does that.
This process is designed to run daily from cron
and so it selects only those posts that have been created or modified in the past two days. You can adjust this as needed. You can download the script here.
#!/bin/bash # | # ___/"\___ # __________/ o \__________ # (I) (G) \___/ (O) (R) # Igor Os # igor@comradegeneral.com # 2017-11-14 configure() { this_time=$(date +'%Y-%m-%d_%H%M%S') # WP home folder wph=/opt/wp/html/wp # WP export target folder e=/opt/wp/wp_export # wp2md target folder w=/opt/wp/wp2md/${this_time} mkdir -p ${w} # Sharepoint upload URL sp_url="https://sharepoint_hsot/path/Shared%20Documents/wp/autosync" # your Sharepoint login credentials DOMAIN=COMPANY USERNAME=jdoe PASSWORD="yourP@ssw0rd" } wp_export() { wp export \ --path=${wph} \ --dir=${e}/ \ --post_type=post \ --post_status=publish \ --filename_format={site}_{date}.{n}.xml \ --start_date=$(date -d "-2 days" +'%Y-%m-%d') --end_date=$(date +'%Y-%m-%d') } convert_md() { # Convert exported XML into markdown format for i in $(find ${e} -type f -name "*\.xml"); do wp2md -url -d ${w}/ ${i} /bin/rm -f ${i} done } convert_sp() { # Convert markdown files into DOCX and HTML # Strip date from filename to make sure the new version overwrites old version on Sharepoint for i in $(find ${w} -mindepth 2 -type f -name "*\.md"); do i_new="$(echo ${i} | awk -F'/' '{print $NF}' | sed -r 's/^[0-9]{8}-//g'| sed "s/\.md$/\.md/g")" /bin/mv "${i}" "${w}/posts/${i_new}" j="$(echo ${i} | awk -F'/' '{print $NF}' | sed -r 's/^[0-9]{8}-//g'| sed 's/\.md$/\.docx/g')" k="$(echo ${i} | awk -F'/' '{print $NF}' | sed -r 's/^[0-9]{8}-//g'| sed 's/\.md$/\.html/g')" pandoc -s "${w}/posts/${i_new}" -o "${w}/posts/${k}" pandoc -s "${w}/posts/${k}" -o "${w}/posts/${j}" done } sync_sp() { # Sync files to Sharepoint for extension in md docx html; do for i in $(find ${w} -mindepth 2 -type f -name "*\.${extension}"); do j="$(echo ${i} | awk -F'/' '{print $NF}' | sed -r 's/^[0-9]{8}-//g'| sed "s/\.md$/\.${extension}/g")" curl --ntlm --user ${DOMAIN}\${USERNAME}:${PASSWORD} --upload-file "${w}/posts/${j}" "${sp_url}/${extension}/" done done } # RUNTIME configure wp_export convert_md convert_sp sync_sp
Experienced Unix/Linux System Administrator with 20-year background in Systems Analysis, Problem Resolution and Engineering Application Support in a large distributed Unix and Windows server environment. Strong problem determination skills. Good knowledge of networking, remote diagnostic techniques, firewalls and network security. Extensive experience with engineering application and database servers, high-availability systems, high-performance computing clusters, and process automation.