பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

நல்ல மதியம், ஹப்ர்!

பணி

எனது நிறுவனம் கெரியோ கனெக்ட் இயங்குதளத்தில் அஞ்சல் சேவையகத்தைப் பயன்படுத்துகிறது; அஞ்சல் சேவையகங்கள் தங்கள் பயனர்களுக்கு சேவை செய்ய வெவ்வேறு நகரங்களில் நிறுவப்பட்டுள்ளன. தொடக்கத்தில் விநியோகிக்கப்பட்ட அமைப்பு இல்லை, ஏனெனில் களங்கள் மூன்றாம் நிலையில் வேறுபடுகின்றன, இது தளத்தின் நகரத்தைக் குறிக்கிறது. எல்லாம் வேலை செய்தது, எல்லோரும் மகிழ்ச்சியாக இருந்தனர். ஒரு நல்ல நாள், நிர்வாகம் ஒரு பணியை அமைத்தது, எல்லா தளங்களுக்கிடையேயான செயல்பாடுகளின் பொதுவான காலண்டர்!

முன்வரலாறு

ஆரம்பத்தில், கெரியோ டிஸ்ட்ரிபியூட்டட் மெயில் டொமைனை உயர்த்துவதே யோசனையாக இருந்தது, அது எல்லாவற்றையும் தானே செய்யும். விரைவில், விநியோகிக்கப்பட்ட டொமைன் உருவாக்கப்பட்டது, ஆனால் அது அவ்வாறு இல்லை, ஒரே சேவையகத்தில் அமைந்துள்ள டொமைன்களுக்கு இடையில் காலெண்டர்கள், கோப்புறைகள், தொடர்புகளை ஒத்திசைக்க சேவையகம் தயாராக உள்ளது, ஆனால் பலவற்றிற்கு இடையில் தரவை ஒத்திசைக்கப் போவதில்லை. சேவையகங்கள்.

நான், நிச்சயமாக, அத்தகைய பிடிப்பை எதிர்பார்க்கவில்லை, எனக்கு தேவையான செயல்பாடு காணவில்லை என்று நீண்ட காலமாக நம்ப முடியவில்லை. பின்னர் இந்த உண்மைக்கான ஆவண ஆதாரங்களைக் கண்டேன். இதனால் நான் மிகவும் குழப்பமாகவும் ஏமாற்றமாகவும் இருந்தேன்.

பணி சுமூகமாக சிக்கலாக மாறியது.

என்ன விருப்பங்கள் இருந்தன?

  • சில மூன்றாம் தரப்பு மென்பொருளுடன் தேவையான தரவைப் பரிமாறிக்கொள்ளும் வெவ்வேறு சேவையகங்களில் இரண்டு கிளையண்டுகளை உருவாக்கவும். இந்த செயல்பாட்டைச் செயல்படுத்தும் இந்த மூன்றாம் தரப்பு மென்பொருளைக் கண்டுபிடிப்பது அவசியம் - அத்தகைய ரேக் எனக்குப் பிடிக்கவில்லை, ஆனால் இது மட்டுமே விரைவான தீர்வு என்று தோன்றியது.
  • சேவையகங்களுக்கிடையில் தரவு ஒத்திசைவுக்கான உங்கள் சொந்த ஸ்கிரிப்டை எழுதுங்கள். உண்மை என்னவென்றால், கெரியோ ஒவ்வொரு பொருளையும் தனித்தனி கோப்பாக சேமித்து வைக்கிறது, எனவே கோப்புகளுடன் பணிபுரிய ஒரு ஸ்கிரிப்டை உருவாக்குவது அவசியம், ஆனால் போதுமான ஆதாரங்களின் பார்வையில், பணி சற்று சிக்கலானதாகத் தோன்றியது, குறிப்பாக பலவற்றைச் செய்வது அவசியம். அதே நேரத்தில் யாரேனும் பணியை உருவாக்கினால், தரவுகளின் சரியான தன்மையை சரிபார்க்கிறது.

முன்னோக்கிப் பார்க்கும்போது, ​​கெரியோ ஒரு பொருளை ஒரு தனி கோப்பாக சேமித்து வைத்தாலும், ஒவ்வொரு முறையும் நீங்கள் பொருளை அணுகும்போது கோப்பு முறைமை எவ்வாறு செயல்படுகிறது என்று கேட்பது அவ்வளவு முட்டாள்தனம் அல்ல என்று நான் கூறுவேன்.

"எதிரிகளின் பிரதேசத்தைக் கைப்பற்றுவதற்கான" திட்டங்களுடன் நிறைய காகிதத் துண்டுகளை வரைந்து, நிறைய நேரம் சிந்தித்து, 6 மணியளவில் நான் இரண்டு சரியான முடிவுகளை எடுத்தேன்:

  • வெளியில் இருந்து எதையும் தேடாமல், சொந்த காரியத்தைச் செய்ய வேண்டும் என்பதே முதல் முடிவு.
  • இரண்டாவது தீர்வு தூங்கச் செல்வது.

ஏற்கனவே காலையில் நான் ஒரு ஒற்றை மற்றும் உண்மையான சிந்தனையுடன் எழுந்தேன், அது ஒரு சில எழுத்துக்களாக குறைக்கப்பட்டது - DFS

முடிவு

தீர்வு இப்படித்தான் தோன்றியது

  • OS Windows க்கு ஒத்திசைவில் பங்கேற்கும் அனைத்து சேவையகங்களையும் கொண்டு வாருங்கள். (அதன் ஒரு பகுதி லினக்ஸில் இருந்தது. அஞ்சல் தரவை மற்றொரு OS க்கு நகர்த்த வேண்டும்)
  • ஒத்திசைவில் பங்கேற்கும் கோப்பகங்களின் கட்டமைப்பைத் தீர்மானிக்கவும் - அவை ஒரே மாதிரியாக இருக்க வேண்டும்.
  • ஒரு டொமைனின் கீழ் அனைத்து அஞ்சல் சேவையகங்களையும் ஒரே DFS இடத்துடன் வரையறுக்கவும்.
  • மேலே குறிப்பிடப்பட்ட விநியோகிக்கப்பட்ட Kerio டொமைனை உருவாக்கவும், ஏனெனில் எனது விஷயத்தில் தரவு ஒத்திசைவு தேவைப்படுகிறது, சேவையகங்களுக்கு இடையில் மட்டுமல்ல, டொமைன்களுக்கும் இடையில்; இரண்டாவது Kerio சேவையகத்தால் சுயாதீனமாக கையாளப்படும். (முதல்தைப் போலல்லாமல்)
  • ஒத்திசைக்கப்பட்ட கோப்பகங்களை DFS இடமாக அமைக்கவும்.
  • ஒருவித ஊன்றுகோலைக் கொண்டு வாருங்கள் (எல்லாவற்றிற்கும் மேலாக, நீங்கள் ஊன்றுகோல் இல்லாமல் வாழ முடியாது)

Реализация

இரண்டு அஞ்சல் சேவையகங்களில் உதாரணம் (மேலும் இருக்கலாம்)

1. கெரியோ விநியோகிக்கப்பட்ட டொமைன்

பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

மாஸ்டர் ஒத்திசைவில் பங்கேற்கவில்லை, ஆனால் இது ஒரு முன்நிபந்தனை அல்ல.

Kerio விநியோகிக்கப்பட்ட டொமைனை எவ்வாறு உருவாக்குவது என்பதை நான் விவரிக்க மாட்டேன், இதில் சிக்கலான எதுவும் இல்லை, நீங்கள் அதிகாரப்பூர்வத்தைப் படிக்கலாம் மனுல்

இறுதியில், நிர்வாக கன்சோலில் பின்வரும் படத்தை நீங்கள் பார்க்க வேண்டும்:

பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

அடுத்து நான் பகிரப்பட்ட கோப்புறைகளில் ஆர்வமாக இருந்தேன்; முதன்மை சேவையகத்தில் பின்வரும் விருப்பங்களை நீங்கள் குறிப்பிடலாம்:

பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

ஒவ்வொரு டொமைனுக்கும் குறிப்பிட்டது - சர்வர் பொது கோப்புறைகளை டொமைன்களுக்கு இடையில் ஒத்திசைக்காது

எல்லா களங்களுக்கும் பொதுவானது - எல்லா சர்வர்களும் ஒவ்வொரு டொமைனில் இருக்கும் பொது கோப்புறைகளை கைவிட்டு, ஒவ்வொரு மெயில் சர்வரிலும் உள்ள அனைத்து டொமைன்களுக்கும் புதிய ஒற்றை கோப்புறைகளை உருவாக்கும்.

எச்சரிக்கை இந்த விருப்பம் அனைத்து சேவையகங்களிலும் உள்ளமைவு கொள்கையை மாற்றினாலும், இது ஒவ்வொரு சேவையகத்திலிருந்தும் தனித்தனியாக ஒத்திசைக்கிறது (அதாவது, ஒரு பொதுவான இடம் இல்லாமல்)

பயனர்களுக்கு இடையே அணுகலை விநியோகிக்கும் திறன் நிர்வாகிக்கு இன்னும் இருக்கும்.
என் விஷயத்தில், அவை அனைத்தும் என்னுடையது மற்றும் எனக்கு முழு ஒத்திசைவு தேவை (உங்கள் விஷயத்தில், தீர்வு வேறுபட்டிருக்கலாம்) ஒவ்வொரு சர்வரிலும் நீங்கள் ஒத்திசைக்கப்பட வேண்டிய ஒரே மாதிரியான டொமைன்களை உருவாக்க வேண்டும்.

2. கெரியோ தரவு கோப்பகங்கள்

இப்போது நீங்கள் ஒரே மாதிரியான பகிரப்பட்ட கோப்பகங்களை உருவாக்க வேண்டும், அவை ஒவ்வொரு சேவையகத்திலும் ஒத்திசைக்கப்பட வேண்டும். கோப்புறைகள், காலெண்டர்கள், தொடர்புகள்.

அறிவுரை - ஆங்கிலத்தில் கோப்பகங்களை உருவாக்கவும், நீங்கள் அவற்றை லத்தீன் மொழியில் உருவாக்கினால், அடைவு சில புரிந்துகொள்ள முடியாத குறியாக்கத்தில் ஒரு பெயரைக் கொண்டிருக்கும், இது குறைந்தபட்சம் சிரமமாக உள்ளது.

இப்போது நீங்கள் ஒவ்வொரு சேவையகத்திலும் அஞ்சல் கோப்புறைகளின் இயற்பியல் பாதைகளைக் கண்டறிய வேண்டும்.

எல்லா களங்களுக்கும் பொதுவானது ~DataMailmail#publicСинхронизируемый каталог#msgs
ஒவ்வொரு டொமைனுக்கும் குறிப்பிட்டது ~DataMailmail**Domain**#publicСинхронизируемый каталог#msgs

முழு கோப்பகத்தையும் நாங்கள் ஒத்திசைக்க மாட்டோம், ஆனால் தரவு கொண்ட கொள்கலனை மட்டுமே நாங்கள் ஒத்திசைக்க மாட்டோம் என்பதை நினைவில் கொள்க #செய்தி — பொருள்களே இங்கு சேமிக்கப்படுகின்றன, மற்ற எல்லா தரவும் ஒவ்வொரு சேவையகத்திற்கும் தனித்தனியாக இருக்க வேண்டும்.

3.DFS

DFS ஐ எவ்வாறு கட்டமைப்பது என்பதை நான் விரிவாக விவரிக்க மாட்டேன், இந்த சிக்கலில் போதுமான தகவல்கள் உள்ளன.

DFS என்பது விண்டோஸ் சர்வரில் உள்ள ஒரு முக்கிய சேவையாகும், இது வெவ்வேறு சர்வர்களில் உள்ள பகிரப்பட்ட கோப்புறைகளை இணைக்கும் திறனை வழங்குகிறது.
MS DFS ஆவணத்திற்கான இணைப்பு

DFS ஐ அமைப்பதற்கு முன், தரவு ஒத்திசைவில் பங்கேற்கும் அனைத்து அஞ்சல் சேவையகங்களையும் நீங்கள் நிறுத்த வேண்டும்.

அமைவு முடிந்ததும், ஒத்திசைக்கப்பட்ட கோப்புறைகள் ஒவ்வொன்றிற்கும் பின்வரும் படத்தைப் பெறுவீர்கள்

பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

இயற்கையாகவே, நகல் கோப்புறைகளை வெளியிட வேண்டிய அவசியமில்லை.

பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

நகலெடுப்பு ஏற்பட்ட பிறகு (அங்கு நகலெடுப்பதற்கு சிறப்பு எதுவும் இல்லை - கோப்புறைகள் காலியாக உள்ளன), அஞ்சல் சேவையகங்களைத் தொடங்கலாம்.

அடுத்து, நீங்கள் அஞ்சல் சேவையகங்களில் ஒன்றை தரவுகளால் நிரப்பலாம் மற்றும் தரவு சரியாகப் பிரதியெடுக்கப்பட்டுள்ளதா என்பதைச் சரிபார்க்கலாம்.

4. ஊன்றுகோல்

பிரதிபலிப்பு விளக்கம்

தரவு ஒத்திசைக்கத் தொடங்கிய பிறகு (DFS) நீங்கள் பார்க்க முடியும், நீங்கள் முதல் சேவையகத்தில் ஏதாவது ஒன்றை உருவாக்கியிருந்தால், எப்படியாவது இரண்டாவது சேவையகத்தில் எதுவும் தோன்றாது, அல்லது அது தோன்றும் ஆனால் எப்படியோ எப்போதும் இல்லை.

விரக்தியடைய வேண்டாம்; நிச்சயமாக, அது விரைவில் அல்லது பின்னர் தோன்றும், ஆனால் பின்னர் விட விரைவில். ஏனெனில் அது 6 - 12 மணி நேரத்தில் மிகவும் தாமதமானது.

விஷயம் என்னவென்றால், நீங்கள் முதல் சேவையகத்தில் ஏதேனும் ஒன்றை உருவாக்கியவுடன், இரண்டாவது மற்றும் அடுத்தடுத்த சேவையகங்களில், கோப்பு உடனடியாக DFS அமைப்புக்கு நன்றி தோன்றும், ஆனால் இந்த அஞ்சல் கோப்பகத்தை ஏற்கனவே யாராவது படித்திருந்தால். மீண்டும் கோரப்பட்டது, சேவையகம் #msgs கோப்புறையை மீண்டும் படிக்காது, ஆனால் அதன் சொந்த குறியீட்டிலிருந்து தரவை உமிழ்ந்துவிடும்.

குறியீட்டை மீண்டும் வாசிப்பதற்கான ஒரு பொறிமுறையை Kerio கொண்டுள்ளது, ஆனால் அது சுமார் ஆறு மணி நேரத்தில் வேலை செய்ய முடியும், மேலும் இந்த 6 மணிநேரத்தில் காலெண்டரில் உள்ள பணியின் பொருத்தம் ஓரளவு இழக்கப்படலாம்.
இப்போது ஒத்திசைவைச் சோதிக்க, அஞ்சல் சேவையகத்தில் உள்ள கோப்புறையை மீண்டும் அணுகிய பிறகு, தொடர்புடைய ஒத்திசைக்கப்பட்ட கோப்பகமான index.fld இல் உள்ள கோப்பை நீக்கலாம், மேலும் இந்த கோப்பு காணாமல் போனால், கெரியோ கோப்பகத்தையும் தரவையும் மீண்டும் படிக்கும். தோன்றும். இதுதான் தீர்வு என்று தோன்றுகிறது, தரவு மாறும்போது கோப்பை நீக்கவும், ஆனால் இது ஒவ்வொரு முறையும் வேலை செய்யாது, ஆனால் முதல் முறையாக மட்டுமே, சில காரணங்களால் Kerio index.fld மீதான அனைத்து ஆர்வத்தையும் இழக்கிறது.
இது பயனருக்குப் புரியாத செய்திகளைத் துப்பத் தொடங்குகிறது - சில வகையான குறியீட்டைப் பற்றியது மற்றும் அது ஏற்கனவே அங்கு ஏதாவது செய்து கொண்டிருக்கிறது.

ஏதாவது ஒன்றை உருவாக்க மற்றொரு விருப்பம் உள்ளது - ஒரு புதிய பொருளை உருவாக்கும் தருணத்தில், சேவையகம் திடீரென்று அது ஒதுக்க விரும்பிய கோப்பு பெயர் ஏற்கனவே எடுக்கப்பட்டிருப்பதை உணர்கிறது, ஆனால் அது பனிப்பந்துகள் மற்றும் இது ஒரு டெட்-எண்ட் விருப்பம்.

எப்படி இருக்க வேண்டும்?

ஏற்கனவே நமக்குப் பரிச்சயமான படத்தை மீண்டும் ஒருமுறை கவனித்தால்.

பகிர்ந்த கோப்புறைகள், தொடர்புகள், விநியோகிக்கப்பட்ட Kerio இணைப்பு சேவையகங்களுக்கு இடையேயான காலெண்டர்களின் முழு ஒத்திசைவு

ஆனால் மற்றொரு விமானத்தில், எங்களுக்கு இப்போது தேவைப்படும் ஒரு சுவாரஸ்யமான பொத்தானைக் காணலாம் - Reindex கோப்புறைகள்

மற்றும் உண்மையில். சின்க்ரோனைஸ் செய்யப்பட்ட #msgs-ல் ஏற்கனவே ஏதாவது மாறிவிட்டது என்று தெரியாத மெயில் சர்வரில் இந்த பட்டனை க்ளிக் செய்தால், நிலையான, வேகமான ரிசல்ட் கிடைக்கும். மறைக்கப்பட்ட அனைத்தும் தெளிவாகிவிடும்.

பதிவில், இந்த செயல்முறை எவ்வளவு நேரம் எடுக்கும் என்பதை நீங்கள் பார்க்கலாம்; பல ஆயிரம் (15 ஆயிரம்) பதிவுகளுடன் இது 3-4 நிமிடங்கள் ஆகும்.

நாம் செய்ய வேண்டியதெல்லாம், நமக்குத் தேவைப்படும்போது இந்த பொத்தானை எவ்வாறு அழுத்துவது என்பதைக் கண்டுபிடிப்பதுதான்.

அது மாறிவிடும் கெரியோ தங்கள் சொந்த வேண்டும் ஏபிஐ

விளக்கம்
ஆவணங்கள்

எங்கள் பணியைச் செய்யும் செயல்பாடு இதுபோல் தெரிகிறது:
session = callMethod("Domains.checkPublicFoldersIntegrity",{}, token)

மேலே உள்ள எல்லாவற்றிலிருந்தும், ஆர்வமுள்ள கோப்புறைகளின் நிலையைக் கண்காணிக்கும் ஒரு ஸ்கிரிப்டை நாம் எழுத வேண்டும், மேலும் ஏதாவது மாறியிருந்தால், நமக்குத் தேவையான செயல்பாட்டைச் செய்யவும்.

வெவ்வேறு சரிபார்ப்புகளைச் செய்யும் ஸ்கிரிப்ட்களின் பல்வேறு பதிப்புகளை நான் எழுதினேன், மேலும் கோப்புகளின் எண்ணிக்கையின் அடிப்படையில் அனைத்து முடிவுகளையும் எடுக்கும் ஒன்றைத் தீர்த்தேன் என்று சொல்ல விரும்புகிறேன்.

ஸ்கிரிப்ட் செயல்படுத்தல்

CMD ஸ்கிரிப்ட் உதாரணம் மற்றும் விளக்கம்

மறு குறியீட்டு.பேட்

@echo off
set dir=%~dp0
%dir:~0,2%
CD "%~dp0"
md "%CD%LOG"
md "%CD%Setup"

ECHO -Start- >> "%CD%LOG%Computername%.log"
ECHO Start -> %Computername% %Date% %Time% >> "%CD%LOG%Computername%.log"

SetLocal EnableDelayedExpansion
for /f "UseBackQ Delims=" %%A IN ("%CD%Setup%Computername%.List") do (
  set /a c+=1
  set "m!c!=%%A"
)

set d=%c%
Echo Folder = %c%
ECHO Folder = %c% >> "%CD%LOG%Computername%.log"
ECHO.
ECHO. >> "%CD%LOG%Computername%.log"

:start
cls
if %c% LSS 1 exit
set /a id=1
set R=0

:Find
REM PF-Start
if "%id%" gtr "%c%" if %R% == 1 Goto Reindex 
if "%id%" gtr "%c%" timeout 60 && Goto start

For /F "tokens=1-3" %%a IN ('Dir "!m%id%!#msgs" /-C/S/A:-D') Do Set 2DirSize!id!=!DS!& Set DS=%%c
if "2DirSize!id!" == "" set 1DirSize!id!=!2DirSize%id%!

echo %id%
ECHO !m%id%!
echo Count        [ !1DirSize%id%! -- !2DirSize%id%! ]

if "!1DirSize%id%!" == "!2DirSize%id%!" ECHO Synk

REM DEL index.fld
if "!1DirSize%id%!" NEQ "!2DirSize%id%!" del /f /q !m%id%!index.fld && del /f /q !m%id%!indexlog.fld && del /f /q !m%id%!search.fld && set R=1 && ECHO RE-index Count && ECHO RE-index Count %Date% %Time% - Delete !m%id%! >> "%CD%LOG%Computername%.log"

set 1DirSize!id!=!2DirSize%id%!

ECHO.
ECHO.

set /a id+=1
goto Find

:Reindex
ECHO. >> "%CD%LOG%Computername%.log"
ECHO --- RE-INDEX - Start - %Date% %Time% --- >> "%CD%LOG%Computername%.log"
ECHO. >> ----------------------------------- >> "%CD%LOG%Computername%.log"
call PublicFolders.py
timeout 60
goto start

exit

ஸ்கிரிப்ட்டின் நகல் ஒவ்வொரு அஞ்சல் சேவையகத்திலும் இயங்குகிறது (சேவையாகப் பயன்படுத்தலாம், Adm உரிமைகள் தேவையில்லை)

ஸ்கிரிப்ட் கோப்பைப் படிக்கிறது Setup%Computername%.List

%Computername% என்பது தற்போதைய சேவையகத்தின் பெயர் (கோப்பகத்தில் அனைத்து சேவையகங்களின் பட்டியல்களும் ஒரே நேரத்தில் இருக்கும்.)

கோப்பு %Computername%.List - ஒத்திசைக்கப்பட்ட கோப்பகங்களின் முழு பாதைகளையும் கொண்டுள்ளது, ஒவ்வொரு பாதையும் ஒரு புதிய வரியில் எழுதப்பட்டுள்ளது, மேலும் வெற்று வரிகளைக் கொண்டிருக்கக்கூடாது.

முதல் துவக்கத்திற்குப் பிறகு, ஸ்கிரிப்ட் தேவையா இல்லையா என்பதைப் பொருட்படுத்தாமல், அட்டவணைப்படுத்தல் செயல்முறையைச் செய்கிறது, மேலும் ஸ்கிரிப்ட் ஒவ்வொரு ஒத்திசைக்கப்பட்ட கோப்பகத்திலும் உள்ள கோப்புகளின் எண்ணிக்கையின் குறியீட்டை உருவாக்குகிறது.

ஸ்கிரிப்ட்டின் நோக்கம் குறிப்பிட்ட கோப்பகத்தில் உள்ள அனைத்து கோப்புகளையும் எண்ணுவதாகும்.

ஒவ்வொரு கோப்பகத்தையும் எண்ணும் முடிவில், குறைந்தபட்சம் ஒரு கோப்பகத்தில் உள்ள கோப்புகளின் தற்போதைய மதிப்பு முந்தையவற்றுடன் பொருந்தவில்லை என்றால், ஸ்கிரிப்ட் ஒத்திசைக்கப்பட்ட அஞ்சல் கோப்பகத்தின் ரூட் கோப்பகத்திலிருந்து கோப்புகளை நீக்குகிறது: index.fld, indexlog.fld, search.fld பகிரப்பட்ட அஞ்சல் கோப்புறைகளின் அட்டவணைப்படுத்தல் செயல்முறையைத் தொடங்குகிறது.

பணியை நிறைவேற்றுவது பற்றிய தகவல் LOG கோப்பகத்தில் கொட்டப்படுகிறது.

அட்டவணைப்படுத்தல் செயல்முறை
அட்டவணைப்படுத்தல் செயல்முறையானது கெரியோ ஏபிஐ செயல்பாட்டைச் செயல்படுத்துகிறது
அமர்வு = அழைப்பு முறை("Domains.checkPublicFoldersIntegrity",{}, டோக்கன்)

ஒரு எடுத்துக்காட்டு செயல்படுத்தல் கொடுக்கப்பட்டுள்ளது - பைதான்
PublicFolders.py

import json
import urllib.request
import http.cookiejar
""" Cookie storage is necessary for session handling """
jar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar))
urllib.request.install_opener(opener)
""" Hostname or ip address of your Kerio Control instance with protocol, port and credentials """

server = "http://127.0.0.1:4040"
username = "user"
password = "password"

def callMethod(method, params, token = None):
    """
    Remotely calls given method with given params.
    :param: method string with fully qualified method name
    :param: params dict with parameters of remotely called method
    :param: token CSRF token is always required except login method. Use method "Session.login" to obtain this token.
    """
    data =  {"method": method ,"id":1, "jsonrpc":"2.0", "params": params}

    req = urllib.request.Request(url = server + '/admin/api/jsonrpc/')
    req.add_header('Content-Type', 'application/json')
    if (token is not None):
        req.add_header('X-Token', token)    

    httpResponse = urllib.request.urlopen(req, json.dumps(data).encode())

    if (httpResponse.status == 200):
        body = httpResponse.read().decode()
        return json.loads(body)

session = callMethod("Session.login", {"userName":username, "password":password, "application":{"vendor":"Kerio", "name":"Control Api-Local", "version":"Python"}})
token = session["result"]["token"]
print (session)

session = callMethod("Domains.checkPublicFoldersIntegrity",{"domainId": "test2.local"}, token)
print (session)

callMethod("Session.logout",{}, token)

http://127.0.0.1:4040 நீங்கள் அதை அப்படியே விட்டுவிடலாம், ஆனால் உங்களுக்கு HTTPS தேவைப்பட்டால், python Kerio சான்றிதழை நம்ப வேண்டும்.

கோப்பில், அஞ்சல் சேவையகத்தின் இந்த செயல்பாட்டை (Adm - பொது அஞ்சல் கோப்புறைகள்) செய்ய உரிமைகளுடன் ஒரு கணக்கைக் குறிப்பிட வேண்டும்.

எனது கட்டுரை கெரியோ கனெக்ட் நிர்வாகிகளுக்கு பயனுள்ளதாக இருக்கும் என நம்புகிறேன்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்